UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#194001#53. evalone_zero_three_zero9065ms1256kbC++111.6kb2023-10-15 08:47:192023-10-15 08:47:21

answer

#include<bits/stdc++.h>
using namespace std;

string s;
map<char,long long> f,big;

void out(){
    map<char,long long> :: iterator it;
    for(it = f.begin();it != f.end();it ++){
        if(it->second == 0) continue;
        printf("%c=",it->first);
        if(it->second >= 1000000000LL || big[it->first]){
            printf("...%09lld\n",it->second % 1000000000LL);
        }else{
            printf("%d\n",it->second);
        }
    }
}

long long getnum(char ch){
    if(ch >= '0' && ch <= '9'){
        return ch - 48;
    }else{
        if(f[ch] >= 1000000000LL){
            big[ch] = 1;
            f[ch] %= 1000000000LL;
        }
        return f[ch];
    }
}

void operate(int pos){
    if(s.find("for",pos) == pos){
        // cout << s.find(")",pos) << "[p][]\n";
        int nxt = s.find(")",pos) + 1;
        char t = s[pos + 4];
        long long be = getnum(s[pos + 6]);
        long long en = getnum(s[pos + 8]);
        for(long long i = be;i <= en;i ++){
            f[t] = i;
            operate(nxt);
        }
        return;
    }
    char t1 = s[pos];
    if(s[pos + 1] == '='){
        char t2 = s[pos + 2];
        f[t1] = getnum(t2);
    }else{
        char t2 = s[pos + 3];
        f[t1] += getnum(t2);
    }
    if(f[t1] >= 1000000000LL){
        big[t1] = 1;
        f[t1] %= 1000000000LL;
    }
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("../data.in","r",stdin);
    freopen("../data.out","w",stdout);
#endif

    while(cin >> s){
        operate(0);
    }
    out();

	return 0;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 10
Accepted
time: 0ms
memory: 1228kb

input:

O=1

output:

O=1

result:

ok single line: 'O=1'

Test #2:

score: 10
Accepted
time: 0ms
memory: 1224kb

input:

C=6
B=B
A=3
B=A
A=0
C=C
B=C
C=6
B=B
A=B
Z=9
Y=0
I=J
J=K
K=L
L=A
L=3
A=L
B=A
B=B
C=B
C=C
B=C
C=0
A=B
...

output:

A=3
B=3
I=3
J=3
K=3
L=3
Z=9

result:

ok 7 lines

Test #3:

score: 10
Accepted
time: 0ms
memory: 1224kb

input:

X+=9

output:

X=9

result:

ok single line: 'X=9'

Test #4:

score: 10
Accepted
time: 0ms
memory: 1228kb

input:

C=6
B+=B
A=3
B=A
A=0
C=C
B=C
C=6
B=B
A+=B
Z=9
Y+=0
I+=J
J+=K
K=L
L=A
L=3
A=L
B+=A
B+=B
C+=B
C+=C
B+=...

output:

A=405
B=3234
C=1620
I=3
J=3
K=6
L=3
Z=9

result:

ok 8 lines

Test #5:

score: 10
Accepted
time: 1ms
memory: 1240kb

input:

for(I,A,6)S+=I

output:

I=6
S=21

result:

ok 2 lines

Test #6:

score: 10
Accepted
time: 3ms
memory: 1240kb

input:

for(I,A,6)S+=I
A=3
for(I,A,6)S+=I
for(I,A,A)S+=I
for(I,A,6)T=9
A=1
B=0
for(J,0,9)B+=A
A=B
B=0
for(J,...

output:

A=10000
B=10000
I=6
J=10000
K=10000
L=10000
S=42
T=9
X=150025001
Y=10001
Z=50005000

result:

ok 11 lines

Test #7:

score: 10
Accepted
time: 5ms
memory: 1244kb

input:

for(A,0,9)for(B,0,A)for(C,B,A)for(D,B,C)for(E,D,C)for(F,D,E)for(G,F,E)for(H,F,G)for(I,H,G)Z+=I

output:

A=9
B=9
C=9
D=9
E=9
F=9
G=9
H=9
I=9
Z=218790

result:

ok 10 lines

Test #8:

score: 10
Accepted
time: 21ms
memory: 1240kb

input:

for(A,0,9)for(B,0,A)for(C,B,A)for(D,B,C)for(E,D,C)for(F,D,E)for(G,F,E)for(H,F,G)for(I,H,G)Z+=1
for(A...

output:

A=9
B=9
C=9
D=9
E=9
F=9
G=9
H=9
I=9
X=9
Y=218790
Z=48620

result:

ok 12 lines

Test #9:

score: 10
Accepted
time: 8ms
memory: 1240kb

input:

for(A,3,7)for(B,2,A)for(C,B,8)for(D,1,C)for(E,D,C)for(F,D,9)for(G,0,E)Z+=G

output:

A=7
B=7
C=8
D=8
E=8
F=9
G=8
Z=214641

result:

ok 8 lines

Test #10:

score: 0
Wrong Answer
time: 27ms
memory: 1256kb

input:

Z+=1
for(I,0,9)for(J,I,9)for(K,I,J)Z+=Z
I=0
J=0
K=0
A=1
for(X,0,9)B+=A
for(X,0,9)C+=B
for(X,0,9)D+=C...

output:

A=1
B=10
C=100
D=1000
E=10000
F=100000
G=1000000
H=10000000
I=100000000
P=900000
Q=900900
R=99999990...

result:

wrong answer 10th lines differ - expected: 'J=...000000000', found: 'P=900000'