题目链接: https://www.luogu.com.cn/problem/P1017
思路分析
将一个十进制数转换为R进制数的过程,其实就和将十进制数转换为二进制数一样,用十进制数一直除以R,然后得到余数,直至商为0结束,然后所得的余数排列起来就是我们想要的R进制数了。(将十进制转换为二进制应该高中数学课上学过吧?......)(除基取余)
那么现在,要求将一个十进制数转换为一个-R进制的数,同样的,不管基数是正还是负,用除基取余法就对了!
好吧,这个也没什么好说的,只要会进制转换,然后稍微注意一点细节部分就OK了,没有什么难以想象的地方。
代码
#include<cstdio>
#include<iostream>
using namespace std;
char result[100];
int main(){
int n,R,shang,yushu,weishu=0;
cin>>n>>R;
cout<<n<<"=";
while(n){
yushu=n%R;
shang=n/R;
if(yushu<0){
yushu+=-1*R;
shang++;
}
if(yushu>=0&&yushu<=9) result[weishu++]='0'+yushu;
else result[weishu++]='A'+yushu-10;
n=shang;
}
for(int i=weishu-1;i>=0;i--) cout<<result[i];
cout<<"(base"<<R<<")";
return 0;
}
评论(0)