yinghualuowu

http://acm.hdu.edu.cn/showproblem.php?pid=6144

解法:一个简单的模拟

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int t;
 4 int mod=1e9+7;
 5 string s;
 6 int main(){
 7     cin>>t;
 8     while(t--){
 9         int flag=0;
10         long long sum=0;
11         cin>>s;
12         int len=s.length();
13         for(int i=0;i<len;i++){
14             if(s[i]==\'(\'){
15                 flag=1;
16             }
17         }
18         if(flag==0){
19             for(int i=0;i<len;i++){
20                 sum%=mod;
21                 sum*=10;
22                 sum+=s[i]-\'0\';
23                 sum%=mod;
24             }
25             cout<<sum%mod<<endl;
26         }else{
27             string s1="";
28             string s2="";
29             s+=\'(\';
30             int y=0;
31             int st=0;
32             if(s[0]>=\'0\'&&s[0]<=\'9\'){
33                 while(s[st]!=\'(\'){
34                         s2+=s[st];
35                         st++;
36                 }
37             }
38             for(int i=st;i<len;){
39                 if(s[i]==\'(\'){
40                     s1="";
41                     i++;
42                     while(s[i]!=\')\'){
43                         s1+=s[i];
44                         i++;
45                     }
46                     i++;
47                 }
48                 if(s[i]==\'#\'){
49                     i+=2;
50                     y=0;
51                     while(s[i]!=\')\'){
52                         y*=10;
53                         y+=s[i]-\'0\';
54                         y%=mod;
55                         i++;
56                     }
57                     i++;
58                     for(int j=1;j<=y;j++){
59                         s2+=s1;
60                     }
61                     if(s[i]>=\'0\'&&s[i]<=\'9\'){
62                         while(s[i]!=\'(\'){
63                                 s2+=s[i];
64                                 i++;
65                             }
66                     }
67                 }
68             }
69             long long ans=0;
70             int Len=s2.length();
71             for(int i=0;i<Len;i++){
72                 ans*=10;
73                 ans%=mod;
74                 ans+=s2[i]-\'0\';
75                 ans%=mod;
76             }
77             cout<<ans%mod<<endl;
78         }
79     }
80     return 0;
81 }
82 /*
83 10
84 1(1)#(1)
85 11
86 1(1)#(1)11
87 1111
88 1(1)#(1)101
89 11101
90 1(1)#(1)1000
91 111000
92 01(1)#(1)1000
93 111000
94 */

 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-09-13
  • 2022-01-02
  • 2021-09-19
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-08-14
  • 2021-08-22
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案