社区讨论
样例都过了 为什么只有 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 条回复,欢迎继续交流。
正在加载回复...