\(\color{red}{see}\space \color{green}{in}\space \color{blue}{my}\space \color{purple}{blog}\)
小学生又双叒叕来写题解啦!
这题是 \(x\) 进制转 \(10\) 进制的模板题。
如何计算呢,我在此引用一张百度搜索的图片。
图片清晰地展示了 \(x\) 进制转 \(10\) 进制的方法。
那么如何在程序中实现呢?
我们使用基数乘后累加的思想实现。
这也并不是什么高科技办法,具体看下面的代码:
int ans = 0;
for (int i = 0; i < s.length(); i++)
{
if ('0' <= s[i] && s[i] <= '9')
{
//累乘的思想,达到次方的要求。
ans = ans * x + (s[i] - '0');
}
else
{
//如果是字母,就按字母的权值计算。
ans = ans * x + (s[i] - 'A' + 10);
}
}
弄明白之后,我们把上面的代码扔进函数里即可。
完整代码:
#include <iostream>
#include <cstdio>
using namespace std;
int x_to_ten(string s, int x)
{
int ans = 0;
for (int i = 0; i < s.length(); i++)
{
if ('0' <= s[i] && s[i] <= '9')
{
//累乘的思想,达到次方的要求。
ans = ans * x + (s[i] - '0');
}
else
{
//如果是字母,就按字母的权值计算。
ans = ans * x + (s[i] - 'A' + 10);
}
}
return ans;
}
int main()
{
int x;
string s;
cin >> x >> s;
cout << x_to_ten(s, x);
return 0;
}
首发:2022-03-27 10:30:42
标签:10,进制,space,int,题解,B3620,color From: https://www.cnblogs.com/liangbowen/p/16622827.html