level 9
uses math;
var
n,i,s,ss,r:longint;
x,y:ansistring;
a:array[1..1000]of integer;
begin
//assign(input,'jzgcd.in');reset(input);
//assign(output,'jzgcd.out');rewrite(output);
readln(n);
read(x,y);
for i:=1 to length(x) do
case x[i] of
'A':a[i]:=trunc(11*power(n,i-1));
'B':a[i]:=trunc(12*power(n,i-1));
'C':a[i]:=trunc(13*power(n,i-1));
'D':a[i]:=trunc(14*power(n,i-1));
'E':a[i]:=trunc(15*power(n,i-1));
else begin val(x[i],r);a[i]:=trunc(r*power(n,i)); end;
end;
for i:=1 to 10 do
inc(s,a[i]);
fillchar(a,sizeof(a),0);
for i:=1 to length(y) do
case y[i] of
'A':a[i]:=trunc(11*power(n,i-1));
'B':a[i]:=trunc(12*power(n,i-1));
'C':a[i]:=trunc(13*power(n,i-1));
'D':a[i]:=trunc(14*power(n,i-1));
'E':a[i]:=trunc(15*power(n,i-1));
else begin val(y[i],r);a[i]:=trunc(r*power(n,i)); end;
end;
for i:=1 to 10 do
inc(ss,a[i]);
r:=s mod ss;
while r<>0 do
begin
s:=ss;
ss:=r;
r:=s mod ss;
end;
fillchar(a,sizeof(a),0);
i:=1;
while s>0 do
begin
a[i]:=ss mod n;
if a[i]>=10 then inc(a[i],55);
ss:=ss div n;
inc(i);
end;
r:=i;
for i:=r downto 1 do
if a[i]>9 then write(upcase(chr(a[i])))
else write(a[i]);
//close(input);close(output);
end.
这是源程序
2014年04月27日 15点04分
3
level 9
K进制的最大公约数(jzgcd.pas)
【试题描述】
有两个K进制的整数A,B,求出A,B的最大公约数,并仍以K进制数的形式输出。
【输入格式】
仅两行:
第1行:一个整数K,表示K进制(2≤K≤16)
第2行:两个K进制整数A和B,两数之间用一个空格隔开。
【输出格式】
输出K进制下的A,B最大公约数,本题在计算过程中,数据保证在longint范围内。
【输入样例1】
2
10 100
【输出样例1】
10
【输入样例2】
16
24 18
【输出样例2】
C
2014年04月27日 15点04分
4
level 9
用F8的时候发现这一段出现了很多次循环,不能确定是不是死循环,如果是的话应该会出现201错误的啊
while s>0 do
begin
a[i]:=ss mod n;
if a[i]>=10 then inc(a[i],55);
ss:=ss div n;
inc(i);
end;
2014年04月27日 15点04分
5
变量s不会改变,若s>0则发生死循环
2014年04月28日 10点04分
回复 Fallen_Breath :这个问题解决了,但是在辗转相除那块出现了217
2014年04月29日 09点04分