您的位置:首页 > 其它

P1017 进制转换

2017-02-03 17:00 211 查看

题目描述

给出一个十进制数N,转化为负进制-R,若基数超过10,则按十六进制的方式处理。

样例输入

30000 -2


样例输出

30000=11011010101110000(base-2)


思路

O(log n)
倒除法,注意的是负整数取模后是正整数取模的相反数,所以要减去它的除数。


var
n,i,x,y:longint;
s:string;
begin
readln(n,x);
write(n,'=');
if n=0 then begin writeln(0,'(base',x,')');exit;end
else
if n=1 then begin writeln(1,'(base',x,')');exit;end
else
repeat
y:=n mod x;
n:=n div x;
if y<0 then
begin
inc(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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: