题解 | #进制转换#

进制转换

https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    //最大值为2^31-1,即代表了不会超过int类型的数据
    //保险起见采用long进行数据的存储
    //对于32位的数据,采用10位的数组存储字符即可,其中数字不变
    //可能出现字符a-z和A-Z,要分别处理
    char hex[11]={};
    while(gets(hex)){
        long tmp = 0;
        for(int i=2;i<strlen(hex);i++){
            if(hex[i]>='0'&&hex[i]<='9'){
                tmp = tmp*16+(hex[i]-'0');
            }
            else if(hex[i]>='a'&&hex[i]<='f'){
                tmp = tmp*16+(hex[i]-'a'+10);
            }
            else{
                tmp = tmp*16+(hex[i]-'A'+10);
            }
        }
        printf("%d\n",tmp);
    }
    return 0;
}

由于不确定后台的测试用例是否区分大小写,因此在这里通通考虑上;

根据题目给定的格式,暂且假设所有的数据都是0x开头;

根据给出数据的范围,接收的数组开辟不需要很大;

根据进制转换的计算公式,可以使用数学中的逐层计算减少总体的运算量。

全部评论

相关推荐

2024-12-27 23:45
已编辑
三江学院 Java
程序员牛肉:死局。学历+无实习+项目比较简单一点。基本就代表失业了。 尤其是项目,功能点实在是太假了。而且提问点也很少。第一个项目中的使用jwt和threadlocal也可以作为亮点写出来嘛?第二个项目中的“后端使用restful风格”,“前端采用vue.JS”,“使用redis”也可以作为亮点嘛? 项目实在是太简单了,基本就是1+1=2的水平。而你目标投递的肯定也是小厂,可小厂哪里有什么培养制度,由于成本的问题,人家更希望你来能直接干活,所以你投小厂也很难投。基本就是死局,也不一定非要走后端这条路。可以再学一学后端之后走测试或者前端。 除此之外,不要相信任何付费改简历的。你这份简历没有改的必要了,先沉淀沉淀
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务