题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=2031
进制转换
算法分析:
十进制转R进制规则:十进制数除以R进制得A,存余数,再用A除以R进制得A,存余数……直至A=0。最后所有余数倒置就是转换得数。
注意:当十进制负数转R进制时,要先将负数变成正数,最后输出添负号
我的ac代码:
#include<stdio.h> #include<math.h> int main() { int N, R; while (~scanf("%d %d", &N, &R)) { int num, i = 0, c[10000]; for (num = abs(N); num>0; i++) { c[i] = num % R; num /= R; } i--; if (N < 0)//当输入的数是负数时,需要输出负号 printf("-"); for (; i >=0; i--) { if (c[i] < 10) printf("%d", c[i]); else if (c[i] == 10) printf("A"); else if (c[i] == 11) printf("B"); else if (c[i] == 12) printf("C"); else if (c[i] == 13) printf("D"); else if (c[i] == 14) printf("E"); else if (c[i] == 15) printf("F"); } printf("\n"); } return 0; }