社区讨论

样例都过了 为什么只有 10pts

B3869[GESP202309 四级] 进制转换参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mhjbd8ca
此快照首次捕获于
2025/11/03 23:47
4 个月前
此快照最后确认于
2025/11/03 23:47
4 个月前
查看原帖
CPP
#include <iostream>
#include <string>
using namespace std;
char b[36] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
void Turn_to_decimal(string num,int data);
unsigned int power(int p,int q); //计算 p^q
int main()
{
    int N;
    cin >> N;
    for (int i=0;i<N;i++)
    {
        int k;
        string number;
        cin >> k >> number;
        Turn_to_decimal(number,k);  //将k进制数number转为十进制
    }
    return 0;
}
void Turn_to_decimal(string num,int data)
{
    int len = num.size();
    unsigned int ans = 0;
    unsigned int a[20] = {0};
    for (int i=0;i<len;i++)
    {
        if (num[i] >= '0' && num[i] <= '9')
            {a[i] = num[i] - '0';}
        else switch(num[i])
        {
            case 'A':a[i] = 10;break;
            case 'B':a[i] = 11;break;
            case 'C':a[i] = 12;break;
            case 'D':a[i] = 13;break;
            case 'E':a[i] = 14;break;
            case 'F':a[i] = 15;break;
            default : break;
        }
    }
    for (int i=len-1 , j=0; i>=0 , j<len; i-- , j++)
    {
        //k进制原数第i位对应的十进制真值 = i * k ^ j.
        ans += a[i] * power(data,j);
    }
    cout << ans << endl;
}
unsigned int power(int p,int q)
{
    int s=1;
    for (int i=1;i<=q;i++)
    {
        s *= p;
    }
    return s;
}
感谢您能读完我的愚蠢的黛马 祝你生活顺利

回复

2 条回复,欢迎继续交流。

正在加载回复...