codeVS之旅:1475 m進位制轉十進位制
阿新 • • 發佈:2018-11-26
1475 m進位制轉十進位制
時間限制: 1 s
空間限制: 128000 KB
題目等級 : 白銀 Silver
題解
檢視執行結果
題目描述 Description
將m進位制數n轉化成一個十進位制數 m<=16
題目保證轉換後的十進位制數<=100
輸入描述 Input Description
共一行
n和m
輸出描述 Output Description
共一個數
表示m進位制的n化成十進位制的數
樣例輸入 Sample Input
1010 2
樣例輸出 Sample Output
10
資料範圍及提示 Data Size & Hint
乘權累加法
解答:
題目中已經給出了提示,使用成權累加法,只需要注意的就是對於ABCDEF怎麼進行處理而已。
程式碼如下:
#include<bits/stdc++.h> using namespace std; int main() { char a[100]; scanf("%s", a); int count=0; for(int i=0; a[i]!='\0'; i++) { count++; } int m; cin>>m; int sum = 0; int now = 0; int b=0; for(int i=count-1; i>=0; i--) { if(a[i] =='A') b=10; else if(a[i]=='B') b=11; else if(a[i]=='C') b=12; else if(a[i]=='D') b=13; else if(a[i]=='E') b=14; else if(a[i]=='F') b=15; else b=a[i] -'0'; now = b * pow(m, count-i-1); sum =sum + now; } cout<<sum; return 0; }