题目来源
www.luogu.org
原地址
http://www.luogu.org/problem/show?pid=1017#
题目描述
我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式。例如:123可表示为 1*10^2+2*10^1+3*10^0这样的形式。输入输出格式
输入格式: 输入的每行有两个输入数据。
结果显示在屏幕上,相对于输入,应输出此负进制数及其基数,若此基数超过10,则参照16进制的方式处理。
输入输出样例
输入样例#1:30000 -2
输出样例#1:30000=11011010101110000(base-2)
输入样例#2:-20000 -2
输出样例#2:-20000=1111011000100000(base-2)
输入样例#3:28800 -16
输出样例#3:28000=19180(base-16)
输入样例#4:-25000 -16
输出样例#4:-25000=7FB8(base-16)
说明
NOIp2000提高组第一题
题解
这题是负数的进制转换。其实正数和负数是一个道理的,在写程序时不用另当别论。
只需用最普通的放方法也是最有效的方法,这个数n除以基数取余存入数组即可。
最后倒着输出即可。
在基数大于10时,输出会遇到字母。没关系,只要先判断一下再用一下这个方法:
chr(ord(a[i])+55) 就能轻松搞定!
代码:
var
begin
end.