SHUoj 字符串进制转换
生活随笔
收集整理的這篇文章主要介紹了
SHUoj 字符串进制转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?字符串進制轉換
發布時間: 2017年7月9日 18:17?? 最后更新: 2017年7月9日 21:17?? 時間限制: 1000ms?? 內存限制: 128M
描述Claire Redfield在龍之谷游戲的一次任務中獲得了一個上了鎖的寶箱,上面刻了一串由小寫字母構成的字符串A和一個數字m? 。
經過Claire長時間研究,他發現密碼是和a? ,m? 有關的。字符串A相當于一個26進制的數字,a? 相當于0? ,b? 相當于1? …….z? 相當于25? 。然后要將這個26進制的數轉化成m? 進制那就是這個寶箱的密碼。
Claire覺得這個太簡單了所以要你幫她完成。
輸入多組輸入,每組一行,輸入一個字符串A? 和一個正整數m? 。
字符串長度<=10,2<=m<=9? 。
每組輸出一行答案,如題意。
樣例輸入1b 2 樣例輸出1 1
思路:進制轉換,不過要注意特判0時候的情況
AC代碼: #define _CRT_SECURE_NO_DEPRECATE #include<iostream> #include<algorithm> #include<queue> #include<set> #include<vector> #include<cstring> #include<string> using namespace std; typedef long long ll; vector<int>vec; string s; int m; ll change(string s, int base) {ll num = 0;for (int i = 0; i < s.size(); i++) {num = num*base + s[i] - 'a';}return num; }void transalte(ll sum, int m) {while (sum) {vec.push_back(sum%m);sum /= m;} }int main() {while (cin >> s >> m) {vec.clear();ll sum = change(s, 26);if (!sum) { cout << "0" << endl; continue; }transalte(sum, m);reverse(vec.begin(), vec.end());for (vector<int>::iterator it = vec.begin(); it != vec.end(); it++) {if ((it + 1) != vec.end())cout << *it;else cout << *it << endl;}}return 0; }
?
轉載于:https://www.cnblogs.com/ZefengYao/p/7193674.html
總結
以上是生活随笔為你收集整理的SHUoj 字符串进制转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6.30
- 下一篇: 微信小程序——tab切换内容