洛谷-P1143 進位制轉換
阿新 • • 發佈:2020-12-26
洛谷-P1143 進位制轉換
題目描述
請你編一程式實現兩種不同進位制之間的資料轉換。
輸入格式
共三行,第一行是一個正整數,表示需要轉換的數的進位制\(n(2≤n≤16)\),第二行是一個n進位制數,若\(n>10\)則用大寫字母\(A-F\)表示數碼\(10-15\),並且該\(n\)進位制數對應的十進位制的值不超過\(1000000000\),第三行也是一個正整數,表示轉換之後的數的進位制\(m(2≤m≤16)\)。
輸出格式
一個正整數,表示轉換之後的\(m\)
輸入輸出樣例
輸入 #1
16
FF
2
輸出 #1
11111111
C++程式碼
#include <iostream> #include <cstring> #include <cmath> using namespace std; char a[35]; int main() { int i, n, m, t, d=0; string b; cin >> n >> b >> m; int len = b.size(); for (i=len-1; i>=0; --i) { t = (b[i]<'A')?(b[i]-'0'):(b[i]-'A'+10); d += t * pow(n, len-i-1); } for (i=0; d!=0; ++i) { t = d % m; a[i] = (t<10)?(t+'0'):(t-10+'A'); d /= m; } for (--i; i>=0; --i) cout << a[i]; cout << endl; return 0; }