p2313.pas
来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· PAS 代码 · 共 107 行
PAS
107 行
PROGRAM p2313;
TYPE
BigNum=array[0..2020]of Integer;
VAR
ch :Char;
part,p :Longint;
num :BigNum;
PROCEDURE Print(var d:BigNum);
var
i :Integer;
begin
for i:=d[0] downto 1 do write(d[i]);
writeln;
end;
PROCEDURE Divp;
var
i,temp :Integer;
begin
temp:=0;
for i:=num[0] downto 1 do
begin
temp:=temp*10+num[i];
num[i]:=temp div 2;
temp:=temp mod 2;
end;
if num[num[0]]=0 then dec(num[0]);
end;
PROCEDURE subtration(p:Integer);
var
i :Integer;
begin
if num[1]>=p then dec(num[1],p) else
begin
num[1]:=num[1]+10-p;
i:=2;
while num[i]=0 do
begin
num[i]:=9;
inc(i);
end;
dec(num[i]);
if num[num[0]]=0 then dec(num[0]);
end;
end;
PROCEDURE Main;
var
i,flag :Integer;
begin
flag:=num[2]*10+num[1];
Divp;
if odd(flag) then
print(num)
else
if flag mod 4=0 then
begin
subtration(1);
print(num);
end else
begin
subtration(2);
print(num);
end;
end;
PROCEDURE Change;
var
i,temp :Integer;
begin
for i:=1 to num[0] div 2 do
begin
temp:=num[i];
num[i]:=num[num[0]-i+1];
num[num[0]-i+1]:=temp;
end;
end;
BEGIN
//assign(input,'p.in');
//reset(input);
readln(part);
for p:=1 to part do
begin
readln;
num[0]:=0;
repeat
read(ch);
inc(num[0]);
num[num[0]]:=ord(ch)-48;
until eoln;
Change;
Main;
if p<part then writeln;
readln;
end;
END.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?