1. 程式人生 > >藍橋杯BASIC-11 基礎練習 十六進位制轉十進位制

藍橋杯BASIC-11 基礎練習 十六進位制轉十進位制

問題描述

  從鍵盤輸入一個不超過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;
}