您的位置:首页 > 其它

noip2000-fjz-进制转换 2008.11.5

2016-02-05 13:12 281 查看
noip2000-fjz-进制转换 2008.11.5

算法:

1.负进制,短除法,但是余数小于0时要从上一位借位(商+1,余数-进制数)

2.遇到此类题目,肯定是对原来的进制转换有所改进的,所以,对规则若不确定可以多写几个连蒙带猜的,必定可以通过!

3.Wa,题中说的是r:-2,-3,….-20,不能想当然的认为是到-16—一定要看清题中的每一个字!

program fjz;
const fin='fjz.in';fout='fjz.out';
p:array[0..19]of char=('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J');
var  x,r,y:longint;
f1,f2:text;
a:array[1..10000]of char;
procedure deal(x,r:longint);
var la,i,x1:longint;
begin
la:=0;   x1:=x;
repeat
y:=x mod r;
if y<0 then begin y:=y-r;x:=x div r+1 end
else x:=x div r;
inc(la);a[la]:=p[y];
until x=0;
write(f2,x1,'=');
for i:=la downto 1 do
write(f2,a[i]);
writeln(f2,'(base',r,')');
end;
begin
assign(f1,fin);reset(f1);
assign(f2,fout);rewrite(f2);
repeat
readln(f1,x,r);
if r<>0 then deal(x,r);
until eof(f1);
close(f1);
close(f2);
end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: