- 等价表达式
- 2013-10-05 17:41:50 @
const
ac:array[1..7]of longint=(17,19,23,29,31,37,39);
var
s,ss,sss:string;
num:array[0..51]of longint;
f,fh:array[0..51]of char;
c,n,cc,ans,ok,z:longint; bool:boolean;
procedure prep;
var i:longint;
begin
for i:=1 to 51 do num[i]:=0;
while pos(' ',s)<>0 do delete(s,pos(' ',s),1);
i:=1;
while i<=length(s) do
begin
if (s[i] in ['+','-'])and((i=1)or(s[i-1]='('))
then insert('0',s,i);
inc(i);
end;
s:=s+'@';
ans:=0;
end;
function good(a,b:char):boolean;
begin
if a in ['@','('] then exit(false);
if b='@' then exit(true);
if a='^' then exit(true);
if b='^' then exit(false);
if a='*' then
begin
if b in['+','-','*',')'] then exit(true);
exit(false);
end;
if a in ['+','-'] then
begin
if b in ['*','('] then exit(false);
exit(true);
end;
end;
function count(a,b:int64; ch:char):int64;
var p:int64; j:longint;
begin
if ch='+' then exit((a+b)mod 97777);
if ch='-' then
if a-b<0 then exit((a-b+97777) mod 97777) else exit(a-b);
if ch='*' then exit((a*b)mod 97777);
p:=1;
if ch='^' then
for j:=1 to b do p:=(p*a)mod 97777;
exit(p);
end;
procedure main;
var
i,nt,ft,gc,t:int64;
begin
nt:=0;
ft:=1;
f[ft]:='@';
i:=1;
while (i<=length(s))and(ft<>0) do
begin
if s[i] in ['+','-','*','(',')','@','^'] then
begin
repeat
if ((s[i]='@')and(f[ft]='@'))or((s[i]=')')and(f[ft]='(' )) then
begin
dec(ft);
break;
end;
if good(f[ft],s[i]) then
begin
num[nt-1]:=count(num[nt-1],num[nt],f[ft]);
dec(ft);
dec(nt);
end else
begin
inc(ft);
f[ft]:=s[i];
break;
end;
until false;
inc(i);
end else
begin
gc:=0;
repeat
if s[i] in ['+','-','*','(',')','@','^'] then break;
if s[i]='a' then gc:=ac[cc] else
begin
val(s[i],t);
gc:=gc*10+t;
end;
inc(i);
until false;
inc(nt);
num[nt]:=gc mod 97777;
end;
end;
ans:=num[1];
end;
begin
readln(s);
readln(n);
for c:=1 to n do
begin
readln(ss);
bool:=true;
for cc:=1 to 7 do
begin
prep;
main;
ok:=ans;
sss:=s;
s:=ss;
prep;
main;
if ans<>ok then bool:=false;
s:=sss;
end;
if bool then
begin
inc(z);
fh[z]:=chr(c+64);
end;
end;
for c:=1 to z do write(fh[c]);
writeln;
end.
4 条评论
-
972964894 LV 9 @ 2014-11-02 18:37:01
errr...
-
2013-10-06 00:13:36@
希望以后题解能发到各题目的题解区下,谢谢合作!
I wish that the problem solutions can be sent to each topic area under the problem solution, thank you!
Решение Надежда проблема может быть отправлен в каждой тематической области под решение проблемы, спасибо!
希望以後題解能發到各題目的題解區下,謝謝合作!
ホープ問題解決、問題の解決策の下で、各トピックエリアに送信することができ、ありがとうございました!
La solution du problème de l'espoir peut être envoyé à chaque sujet dans la solution du problème, merci!
Rozwiązanie problemu Nadzieja mogą być wysyłane do każdego obszaru tematu w ramach rozwiązania problemu, dziękuję! -
2013-10-05 22:54:11@
希望以后题解能发到各题目的题解区下,谢谢合作!
I wish that the problem solutions can be sent to each topic area under the problem solution, thank you!
Решение Надежда проблема может быть отправлен в каждой тематической области под решение проблемы, спасибо!
希望以後題解能發到各題目的題解區下,謝謝合作!
ホープ問題解決、問題の解決策の下で、各トピックエリアに送信することができ、ありがとうございました!
La solution du problème de l'espoir peut être envoyé à chaque sujet dans la solution du problème, merci!
Rozwiązanie problemu Nadzieja mogą być wysyłane do każdego obszaru tematu w ramach rozwiązania problemu, dziękuję! -
2013-10-05 18:55:42@
为什么
- 1