• ZOJ 3654 Letty's Math Class 模拟 难度:0


    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4844

    题意:给你一个只包含中括号和正整数,+,-,结果在longlong范围内的公式和两个备选答案,

    如果答案中有9,第一个是9选A,否则选B

    否则,如果第一个是正确答案,输出B,否则输出A

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    #include <cctype>
    #define clr(x,y) memset(x, y, sizeof x)
    #include <cmath>
    using namespace std;
    const int maxn=2e3+3;
    typedef long long ll;
    char maz[maxn];
    
    long long read(int& head){
        //printf("read start from %d ",head);
        long long ans=0;
        while(isalnum(maz[head])){
            ans*=10;
            ans+=maz[head]-'0';
            head++;
        }
       // printf("end at %d ans = %lld
    ",head,ans);
        return ans;
    }
    typedef pair<long long ,int > p;
    p calc(int st){
        long long ans=0;
        int cnt=1,ind =st;
        for(;maz[ind]!=0&&maz[ind]!=']';){
            if(maz[ind]=='-'){
                cnt=-1;
                ind ++;
                //printf("calc ind %d cnt -1
    ",ind);
            }
            else if(maz[ind]=='+'){
                ind++;
            }
            else if(isalnum(maz[ind])){
                ans+=cnt*read(ind);
                cnt=1;
                //printf("calc ind %d cnt 1 ans%lld 
    ",ind,ans);
            }
            else if(maz[ind]=='['){
                ind++;
                p tmp=calc(ind);
                ans+=cnt*tmp.first;
                ind=tmp.second+1;
                cnt=1;
            }
        }
        //printf("calc start at %d end at %d ans = %lld
    ",st,ind,ans);
        return p(ans,ind);
    }
    
    int main(){
        //freopen("input.txt","r",stdin);
        while(scanf("%s",maz)==1){
            long long a,b;
            scanf("%lld%lld",&a,&b);
            if(a==9){
                puts("A");
                continue;
            }
            else if(b==9){
                puts("B");
                continue;
            }
            long long ans=calc(0).first;
            if(ans==a){
                puts("B");
            }
            else puts("A");
        }
        return 0;
    }
    
  • 相关阅读:
    php __clone实现
    php 魔术方法 __autoload()
    ubuntu 下telnet 操纵memcache 实现
    ubuntu下 使用AB做压力测试
    github 使用方法总结 还有一部分不太懂
    ubuntu 下 github 使用方法 以及异常修改
    ubuntu 14.0 下github 配置
    postgres安装 以及修改postgres 密码
    ubuntu 14.下 netbeans 自体锯齿 消除
    js实现多张图片每隔一秒换一张图片
  • 原文地址:https://www.cnblogs.com/xuesu/p/4509029.html
Copyright © 2020-2023  润新知