当前位置: 代码迷 >> 综合 >> P1017 进制转换
  详细解决方案

P1017 进制转换

热度:92   发布时间:2023-10-09 11:16:01.0

题目描述

给出一个十进制数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.