題目大意:有一個初始變量,值爲0,三種操做 ios
for x 一個循環的開始,循環x次spa
end 一個循環的結束code
add 將變量值加一blog
問最後變量的值是否超過2^32-1,若超過,輸出一串字符,不超過則輸出變量的值ci
作法:對於循環結構,有兩種思路,一種是先算出內循環的值,而後再一層一層的向外算;還有一種是從外向內進行變量操做。咱們平時的思考方法應該與思路一比較類似,可是在這個題中會發現很難實現,好比說一個循環內嵌套了兩個並列的循環結構,這就讓人很頭大。因此本題應該採用思路二,思路二一旦想明白了,代碼就不難寫了。io
#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; }