[普及/提高-]P1017 进制转换

Xiaoma 程序设计 2020-03-07



题目链接: 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;
}

PREV
回溯法 —— 八皇后问题
NEXT
广度优先搜索算法介绍

评论(0)

发布评论