小白编程题:R进制转X进制
描述
输入一个R进制的数N,将它转换成X进制的数。
输入
输入数据包含多个测试实例,对于每组测试用例:
分别输入三个整数:R(2 <= R <= 16), N (N的十进制 <= 10^9), X(2 <= X <= 16, X ≠ R) 。
输出
输出转换后的数,每个输出占一行。
输入样例 1
11 A 10
2 1000 11
2 1111 12
输出样例 1
10
8
13
#include<stdio.h>
#include<string.h>
int ctoi(char c) {
if (c >= 48 && c <= 57)
return c - 48;
else if (c >= 65 && c <= 70)
return c - 65 + 10;
return 0;
}
char itoc(long long n){
if(n>=0&&n<10)
return n+48;
else if(n>=10&&n<=16)
return n+55;
return 0;
}
int main(){
//(N)R->(?)10
int r,x;
char n[10000];
while (scanf("%d %s %d", &r, n,&x) != EOF) {
if(n[0]==48){
printf("0\n");
continue;
}
long long len = strlen(n);
long long sum = 0;
int start = (n[0] == '-') ? 1 : 0;
for (long long i = start; i < len; i++) {
sum = sum * r + ctoi(n[i]);
}
if(x==10){
if (n[0] == '-') {
printf("%lld\n", -sum);
continue;
} else {
printf("%lld\n", sum);
continue;
}
}
//(N)10->(X)R
long long a[100]={0};
int i=0;
for(;sum!=0;i++){
a[i]=sum%x;
sum/=x;
}
char m[100]={'\0'};
for(int t=i-1,z=0;t>=0;t--,z++){
m[z]=itoc(a[t]);
}
if(n[0]==45){
printf("-");
}
puts(m);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具