zoukankan      html  css  js  c++  java
  • CF-1175 B.Catch Overflow!

    题目大意:有一个初始变量,值为0,三种操作 

    for x 一个循环的开始,循环x次

    end 一个循环的结束

    add 将变量值加一

    问最后变量的值是否超过2^32-1,若超过,输出一串字符,不超过则输出变量的值

    做法:对于循环结构,有两种思路,一种是先算出内循环的值,然后再一层一层的向外算;还有一种是从外向内进行变量操作。我们平时的思考方法应该与思路一比较相似,但是在这个题中会发现很难实现,比如说一个循环内嵌套了两个并列的循环结构,这就让人很头大。所以本题应该采用思路二,思路二一旦想明白了,代码就不难写了。

    #include<iostream>
    #include<cstdio>
    #define maxn 100010
    #define Mod 4294967295LL
    using namespace std;
    long long st[maxn],ans;
    int n,top;
    char s[100];
    int main(){
        scanf("%d",&n);
        st[0]=1;
        while(n--){
            scanf("%s",s+1);
            if(s[1]=='a'){
                ans+=st[top];
                if(ans>Mod){
                    puts("OVERFLOW!!!");
                    return 0;
                }
            }
            else if(s[1]=='f'){
                long long x;
                cin>>x;
                top=top+1;
                st[top]=st[top-1]*x;
                if(st[top]>Mod)st[top]=Mod+1;
            }
            else top--;
        }
        if(ans>Mod)puts("OVERFLOW!!!");
        else cout<<ans<<endl;
        return 0;
    }
  • 相关阅读:
    Jetson Nano更改软件源
    树莓派开机启动VNC
    树莓派VNC复制粘贴
    数学之美-泰勒公式
    C++顺序容器
    eigen的简单用法汇总
    C++并发-同步并发
    C++ string类
    C++并发-互斥元
    Nginx常用命令
  • 原文地址:https://www.cnblogs.com/thmyl/p/11704680.html
Copyright © 2011-2022 走看看