杭电ACM 1197: Specialized Four-Digit Numbers

本文介绍了一种算法,该算法找出所有四位十进制数中,其各位数字之和与对应的十六进制、十二进制数的各位数字之和相等的所有数。文章提供了C++实现代码,并解释了如何通过循环和取模操作来计算不同进制下数字的各位之和。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原创作品 转载请注明出处http://blog.csdn.net/always2015/article/details/45342315

这里写图片描述

这一道题呢说起来难也不难,首先是要看懂题目,题目意思是将一个位数为四位的十进制数的各个位上的数相加,再和与之相对应的十六进制、十二进制各个位上数相加的和相比较,三者想等的话就输出。再者就是整个代码结构的问题,代码尽量要简洁。我的代码里面各自一个while循环就搞定了。不必设太多的变量。一定要搞清楚十进制,十六进制,都是一样的道理,十二进制的各位数是怎么样算出来的,他们之间不过是求余和求商。注意最后比较的三个数的和不能写成dec_sum==hex_sum==duo_sum,有c语言基础的同学肯定知道为什么不能这样写。下面是我的AC代码,有疑问的话,请给我留言。

#include <iostream>
#include<stdio.h>

using namespace std;

int main(void)
{
    int dec_sum=0,hex_sum=0,duo_sum=0,dec_temp,hex_temp,duo_temp;

    for(int i=1000; i<10000; i++)
    {
        //计算十进制各位的和
        dec_temp=i;
        while(dec_temp!=0)
        {
            dec_sum+=dec_temp%10;
            dec_temp/=10;
        }
        //计算16进制各位的和
        hex_temp=i;
        while(hex_temp!=0)
        {
            hex_sum+=hex_temp%16;
            hex_temp/=16;

        }
        //计算12进制各位的和
        duo_temp=i;
        while(duo_temp!=0)
        {
            duo_sum+=duo_temp%12;
            duo_temp/=12;

        }

        //三种方式的和都相等就输出,注意不能写成dec_sum==hex_sum==duo_sum
        if(dec_sum==hex_sum&&hex_sum==duo_sum)
            cout<<i<<endl;
        //在最后必须重新清零
        dec_sum=0;
        hex_sum=0;
        duo_sum=0;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值