记录编号 |
310826 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2000]进制转换 |
最终得分 |
100 |
用户昵称 |
核糖核酸 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.025 s |
提交时间 |
2016-09-23 15:11:09 |
内存使用 |
0.30 MiB |
显示代码纯文本
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;
int n, r, cnt, t;
int a[1005];
char c[25] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K'};
inline int Mod(int n, int r) {
if(n%r == 0) return 0;
if(n > 0) return n%r;
return (-r) + (n%r);
}
int main () {
freopen("fjz.in","r",stdin);
freopen("fjz.out","w",stdout);
while(scanf("%d%d", &n, &r) != EOF) {
cnt = 0; t = n;
while(n != 0) {
a[++cnt] = Mod(n, r);
//printf("%d mod %d = %d\n", n, r, a[cnt]);
n = (n - a[cnt]) / r;
}
printf("%d=",t);
if(t == 0) putchar('0');
else for(int i=cnt; i>=1; i--) putchar(c[a[i]]);
printf("(base %d)\n", r);
}
fclose(stdin); fclose(stdout);
return 0;
}