记录编号 310826 评测结果 AAAAAAAAAA
题目名称 [NOIP 2000]进制转换 最终得分 100
用户昵称 Gravatar核糖核酸 是否通过 通过
代码语言 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;
}