【小韦同学@神犇营-my0106-进制转换】
题目:
描述
将一个 r (2 ≤ r ≤ 9)进制的数 x (0 ≤ x ≤ 100000000)转成十进制。
本题所有的数据均小于等于 10 ^18。
输入
输入仅一行,为 r 和 x,两个数字用空格隔开。
输出
输出仅一行,为对应的十进制数。
输入样例1
2 110
输出样例1
6
题解:
/*********************************************************************
* 题目:神犇营-my0106-进制转换
* 作者:小韦老师
* 邮箱:weichangying_wcy@163.com
* 题解:
思路:
用一个变量 r 来存储进制数,用另一个变量 x 来存储输入的数。
根据进制转换的公式,码权积累和来做进制转换。
用一个变量 num 来存储转换得的十进制数,初始化为 0;用另一个变量 p
来存储权值。
当 x 不等于 -1 时,将 x 的最右边的数对应的码权积累加到 num 中,x
将最右边的数划掉(x /= 10),权值乘以 r(p *= r)。
*********************************************************************/
#include <bits/stdc++.h>
using namespace std;
int main() {
int r, x;
cin >> r >> x;
int num = 0;
int p = 1;
while (x != 0) {
int t = x % 10;
num += t * p;
x /= 10;
p *= r;
}
cout << num;
return 0;
}
我是小韦同学,企者不立,跨者不行,每天进步一点点。
欢迎大家多多交流,如果发现有错误,请多指正。有疑问的同学也可以留言评论或者发邮件。
邮箱:weichangying_wcy@163.com