题目描述
给出一个十进制数N,转化为负进制-R,若基数超过10,则按十六进制的方式处理。
样例输入
30000 -2
样例输出
30000=11011010101110000(base-2)
思路
O(log n)
倒除法,注意的是负整数取模后是正整数取模的相反数,所以要减去它的除数。
varn,i,x,y:longint;s:string;
beginreadln(n,x);write(n,'=');if n=0 then begin writeln(0,'(base',x,')');exit;endelseif n=1 then begin writeln(1,'(base',x,')');exit;endelserepeaty:=n mod x;n:=n div x;if y<0 thenbegininc(n);y:=y-x;end;y:=y+48;if y>=58 then y:=y+7;s:=chr(y)+s;until n=0;writeln(s,'(base',x,')');
end.