藍橋杯BASIC-11 基礎練習 十六進位制轉十進位制
阿新 • • 發佈:2018-11-16
問題描述
從鍵盤輸入一個不超過8位的正的十六進位制數字符串,將它轉換為正的十進位制數後輸出。
注:十六進位制數中的10~15分別用大寫的英文字母A、B、C、D、E、F表示。
樣例輸入
FFFF
樣例輸出
65535
思路:補了一下進位制轉換的知識,這篇部落格很詳細:開啟連結
另外本題要注意範圍開longlong,不然會爆
#include<cstdio> #include<math.h> #include<cstring> #include<iostream> #include<algorithm> using namespace std; typedef long long ll; //const int N=10005; //int a[N]; int main() { char s[9]; scanf("%s",s); ll summ=0; int len=strlen(s); for(int i=0;i<len;++i) { if(s[i] <='9' && s[i]>='0') summ+=(s[i]-'0')*pow(16,len-i-1); else { int a=s[i]-'A'+10; summ+=a*pow(16,len-i-1); } } printf("%lld\n",summ); return 0; }