SDNU1431 16进制转化成10进制

来源:互联网 发布:软件安全性设计 编辑:程序博客网 时间:2024/06/14 10:34

1431.十六进制转十进制
Time Limit: 1000 MS Memory Limit: 131072 KB
Total Submission(s): 47 Accepted Submission(s): 15
Description
问题描述   从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。   注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 FFFF 样例输出 65535

#include<cstdio>#include<algorithm>#include<iostream>#include<cmath>#include<iomanip>#include<cstring>#include<vector>#include<iterator>#define N 10001using namespace std;char a[100000];int k=0;int zhuan(char a){    if(a>='A' &&  a<='Z'){        return (a - 'A') + 10;    }    if(a>='0' && a<='9'){        return a - '0';    }}int main(){    char a[100000];    long long sum=0, x=1;    while(cin >> a){        for(int i=strlen(a)-1; i>=0; i--){            sum+=(long long) zhuan(a[i])*x;            x*=16;        }        cout << sum << endl;        sum = 0;        x=1;        memset(a, 0, sizeof(a));    }    return 0;}