📄 equal.pas
字号:
const
m=5;
var
sss:array[1..50] of longint;
key:array[1..50] of longint;
stack:array[1..50] of char;
ss:string;
a:array[1..m] of longint;
i,j,k,n,t:longint;
b:boolean;
procedure init;
var
i,k:longint;
begin
k:=0;
for i:=1 to length(ss) do
if ss[i]<>' ' then
begin
inc(k);
ss[k]:=ss[i];
end;
delete(ss,k+1,50);
end;
function operate(num1,num2:longint; op:char):longint;
var
num3:longint;
begin
if op='+' then num3:=num1+num2;
if op='-' then num3:=num1-num2;
if op='*' then num3:=num1*num2;
if op='^' then
begin
num3:=1;
for i:=1 to num2 do
num3:=num3*num1 mod 10000;
end;
operate:=num3 mod 10000;
end;
function calc(x:longint):longint;
var
i,top,num1,num2:longint;
op:char;
ts:string;
begin
i:=0; k:=0; top:=0;
fillchar(sss,sizeof(sss),0);
while i<length(ss) do
begin
inc(i);
if (ss[i]>='0')and(ss[i]<='9') then
begin
inc(k);
ts:=ss[i];
while (i<length(ss))and(ss[i+1]>='0')and(ss[i+1]<='9') do
begin
inc(i);
ts:=ts+ss[i];
end;
val(ts,sss[k]);
end;
if ss[i]='a' then
begin
inc(k);
sss[k]:=x;
end;
if ss[i]='(' then
begin
inc(top);
stack[top]:=ss[i];
end;
if (ss[i]='+')or(ss[i]='-')then
begin
while (top>0)and(stack[top]<>'(') do
begin
op:=stack[top];
num2:=sss[k]; dec(k); num1:=sss[k];
sss[k]:=operate(num1,num2,op);
dec(top);
end;
inc(top);
stack[top]:=ss[i];
end;
if ss[i]='*' then
begin
while (top>0)and(stack[top]<>'(')and(stack[top]<>'+')and(stack[top]<>'-') do
begin
op:=stack[top];
num2:=sss[k]; dec(k); num1:=sss[k];
sss[k]:=operate(num1,num2,op);
dec(top);
end;
inc(top);
stack[top]:=ss[i];
end;
if ss[i]='^' then
begin
while (top>0)and(stack[top]<>'(')and(stack[top]='^') do
begin
op:=stack[top];
num2:=sss[k]; dec(k); num1:=sss[k];
sss[k]:=operate(num1,num2,op);
dec(top);
end;
inc(top);
stack[top]:=ss[i];
end;
if ss[i]=')' then
begin
while stack[top]<>'(' do
begin
op:=stack[top];
num2:=sss[k]; dec(k); num1:=sss[k];
sss[k]:=operate(num1,num2,op);
dec(top);
end;
dec(top);
end;
end;
for i:=top downto 1 do
begin
op:=stack[i];
num2:=sss[k]; dec(k); num1:=sss[k];
sss[k]:=operate(num1,num2,op);
end;
if sss[1]>=0 then calc:=sss[1] else calc:=sss[1]+10000;
end;
begin
for i:=1 to m do a[i]:=i;
readln(ss);
init;
for t:=1 to m do key[t]:=calc(a[t]);
readln(n);
for j:=1 to n do
begin
readln(ss);
init;
b:=false;
for t:=1 to m do
if key[t]<>calc(a[t]) then
begin
b:=true;
break;
end;
if not b then write(chr(j+64));
end;
writeln;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -