Arithmetic of Bomb
Accepts: 1050
Submissions: 1762
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 32768/32768 K (Java/Others)
题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=777&pid=1001
这场百度之星打的。。止步于复赛。
中文题目,我喜欢,这个题是百度之星的签到题,直接暴力就好了。
官方题解:
表达式的最大长度只有1000, #后面只会是一位的数字,也就是最大展开9次,因此直接展 开的最大长度不会超过9000,
所以按照规则直接处理即可。
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>
#define LL long long
using namespace std;
const int maxn=1e3+4;
const int mod=1e9+7;
char s[maxn];
string s1,s2;
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%s",s);
for(int i=0;s[i];i++){
if(s[i]=='('){
s2.clear();
while(isdigit(s[++i])){
s2+=s[i];
}
i+=3;
int t=s[i]-'0';
for(int j=0;j<t;j++){
s1+=s2;
}
i++;
}
else{
s1+=s[i];
}
}
LL ans=0;
for(int i=0;i<(int)s1.size();i++){
ans=ans*10+s1[i]-'0';
ans%=mod;
}
s1.clear();
cout<<ans<<endl;
}
return 0;
}