1 条题解

  • 4
    @ 2024-4-27 16:49:11

    【题目大意】

    本题考察进制转换的过程,要求将数字N1N106N(1≤N≤10^6)转换为RR进制2R36(2≤R≤36)输出。

    【考纲知识点】

    基本运算、输入输出语句(一级)、一维数组的知识(三级)、进制转换(三级)。

    【解题思路】

    通过短除法取余数,将每次取余的结果储存在一个数组里,直到N<RN<R,将剩余的NN存入数组,最后将数组倒序遍历输出即可。

    *注意,十进制下除以大于等于 10 的数会出现两位数的情况,所以需要一个字符串来​转换成对应的字母​。

    【参考程序】

    #include <bits/stdc++.h>
    using namespace std;
    string c="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//对应字符。
    char a[100005];
    int top,n,r;
    int main(){
        cin>>n>>r;
        while (n>=r){   //短除法过程,n>=r时进入循环
            a[++top]=c[n%r];  //每次循环把n对r取余的结果存进a数组
            n/=r;             //n的值更新为n除以r的结果
        }
        a[++top]=c[n];      //循环结束后把剩余的n存入a数组
        for (int i=top;i>=1;i--){   //将取余结果和最后剩余的n倒序输出
            cout<<a[i];
        }
        return 0;
    }
    
    • 1

    [GESP样题 三级] 进制转换

    信息

    ID
    562
    时间
    1000ms
    内存
    128MiB
    难度
    4
    标签
    递交数
    143
    已通过
    67
    上传者