蓝桥基础练习——十六进制转十进制

问题描述:

  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入

       FFFF

样例输出

      65535

       大水题。。。还以为一次就可以过的,然后就。。。没然后了,再见再见再见,关键的坑就是取值范围,蓝桥的题给的范围测试时一定会取到顶,而这次给的数据必须用long long,输出不记得格式就直接cout了,用数组提前将幂运算结果放好,既方便又省时间,,嗯~这样就妥妥的了。
#include<iostream>
#include<stdio.h>
#include<string.h>

using namespace std;

long long cos[8]={1,16,256,4096,65536,1048576,16777216,268435456};
char a[8];

int main()
{
    memset(a,'\0',sizeof(a));
    scanf("%s",a);
    int l=strlen(a);
    long long sum=0;
    l--;
    for(int i=l;i>=0;i--)
    {
        switch(a[i])
        {
            case '0':sum+=0*cos[l-i];break;
            case '1':sum+=1*cos[l-i];break;
            case '2':sum+=2*cos[l-i];break;
            case '3':sum+=3*cos[l-i];break;
            case '4':sum+=4*cos[l-i];break;
            case '5':sum+=5*cos[l-i];break;
            case '6':sum+=6*cos[l-i];break;
            case '7':sum+=7*cos[l-i];break;
            case '8':sum+=8*cos[l-i];break;
            case '9':sum+=9*cos[l-i];break;
            case 'A':sum+=10*cos[l-i];break;
            case 'B':sum+=11*cos[l-i];break;
            case 'C':sum+=12*cos[l-i];break;
            case 'D':sum+=13*cos[l-i];break;
            case 'E':sum+=14*cos[l-i];break;
            case 'F':sum+=15*cos[l-i];break;
        }
    }
    cout<<sum<<endl;
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值