洛谷B3869 [GESP202309 四级] 进制转换

题目链接

题意概括:大概意思就是叫你将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;
}

第二篇题解,多多支持,谢谢!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值