problem description:输入一个十进制数N,将它转换成R进制数输出。
思路:问题的实质为十进制转换为其他进制。首先想到的就是短除法,对相关信息搜索之后并未找到有关进制转换的内容,进一步搜索后发现这种方法可能不叫短除法。
最终找到解决此题的核心思想:十进制转任意进制的通用方法是:除x取余倒排法(x代表进制数)。
代码如下:
#include <stdio.h>
int main(){
int n,r,cnt,i;
while(~scanf("%d %d", &n,&r)){
int a[50];
cnt=0;
if(n<0){
printf("-");
n=-n;
}
while(n>=r){//if i don't know the number of cycles,i can use "while"cycle
a[cnt++]=n%r;
n=n/r;
}
a[cnt++]=n;
for(i=cnt-1;i>=0;i--){//mistake
if(a[i]>=10)
printf("%c", a[i]-10+'A');
else
printf("%d", a[i]);
}
printf("\n");
}
}
在mistake处我犯了一个错误,我希望从最大下标处开始打印,结果忘记下标-1,同样的错误不能再犯第二次!