1 条题解
-
1
Description 贝贝很喜欢上数学课,因为他觉得数学课可以带给他很多乐趣,不会像其它科目那样显得沉闷,一天,数学老师为了提高学生的学习兴趣,便出了一道有趣的数学题目:
首先,他把全班分成 k 个小组,游戏开始前,老师会把三个数据 n,t,m 写在黑板上,他要求把一个 n 进制的数 t,转换成 m 进制数。哪个小组最快算出这个 m 进制数,将会得到奖品,奖品会分发给小组的每个同学。
请你编一程序,帮助贝贝所在小组获胜。
Format Input 输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制 n(2 ≤ n ≤ 16),第二行是一个 n 进制数,若 n > 10 则用大写字母 A 至 F 表示数码 10 至 15,并且该 n 进制数对应的十进制数的值不超过 2000000000,第三行也是一个正整数,表示转换之后的数的进制 m(2 ≤ m ≤ 16)。
Output 输出仅一行,包含一个正整数,表示转换之后的 m 进制数。
Samples 输入数据 1 16
FF 2 输出数据 1 11111111#include #include using namespace std; int main() { string s; int x,y; cin>>y>>s>>x; long long c=s.size()-1,ans=0,p=1; for(int i=c;i>=0;i--) { int x; if(s[i]>='0'&&s[i]<='9') { x=s[i]-'0'; } else if(s[i]>='A'&&s[i]<='Z') { x=s[i]-'A'+10; } else { x=s[i]-'a'+10; } ans+=xp; p=y; } if(ans == 0){ cout << 0; return 0; } stack w; while (ans) { int temp = ans % x; if (temp < 10) { w.push(temp + '0'); } else { w.push(temp - 10 + 'A'); } ans /= x; } while (!s.empty()) { cout << w.top(); w.pop(); } return 0; }
- 1
信息
- ID
- 1207
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 10
- 已通过
- 0
- 上传者