题意概括:大概意思就是叫你将n个K进制的数转换为10进制
这题有个坑点,他没说数据范围,但我觉得开long long肯定是没有问题的(开int爆零)。
先看样例:
输入1::
2
8 1362
16 3F0
输出1:
754
1008
具体思路的话就不写代码里了,思路如下:
(1):由于是多组输入,while是必有的(不习惯用while的可以用for)
(2):因为16进制的原因,所以输入要用string,当然输入进来的进制还是long long的.
(3):写一个函数进行转换,要将k,num传进去,转换内部主要判断10进制以上和以下的判断方法。
接下来上代码:
Code
#include <bits/stdc++.h>
using namespace std;
void zhuan(int n,string num){
long long len = num.length();
long long sum=0;
long long cnt=len-1;
for(int i=0;i<len;i++){
int x;
if(num[i] >= 'A' && num[i] <= 'Z'){
x = num[i] - 'A' + 10;
}
else{
x = num[i] - '0';
}
sum += x * pow(n,cnt);
cnt--;
}
cout << sum << endl;
}
int main(){
int n;
cin >> n;
while(n--){
long long k;
string num;
cin >> k >> num;
zhuan(k,num);
}
return 0;
}
第二篇题解,多多支持,谢谢!