求100-999之间的水仙花数之和(水仙花数 是指一个三位数的各位数字的立方和是这个数本身,如:153=1^3+5^3+3^3

#include <stdio.h>
int main()
{
    int d1,d2,d3;
    int n;
    int sum;
    sum = 0;
    for(d1=1;d1<=9;d1++)
	{
        for(d2=0;d2<=9;d2++)
		{
            for(d3=0;d3<=9;d3++)
			{
                n = d1*100 + d2*10 + d3;
                if(n == d1*d1*d1+d2*d2*d2+d3*d3*d3
				//如果写成n==d1^3+d2^3+d3^3就不对了
				//C语言没有立方运算符号,没有指数运算符


				)
				{
                    sum += n;
                     printf("%d\n",n);
                    
                }
            }
        }
    }
   // printf("%d\n",sum);
  
    return 0;
}
  • 12
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 100-999之间水仙花之和,即找出所有三位数中符合水仙花数定义的数,然后将它们的和出来。 具体步骤如下: 1. 从100开始遍历到999,对于每个数,将其百位、十位、个位分别取出来。 2. 计算这三个数字的立方和,如果等于这个数本身,则说明这个数水仙花数,将它加入到结果中。 3. 遍历完所有的数后,将结果输出即可。 代码如下: sum = for i in range(100, 100): a = i // 100 b = (i // 10) % 10 c = i % 10 if a ** 3 + b ** 3 + c ** 3 == i: sum += i print(sum) 输出结果为:40730 ### 回答2: 水仙花数是一个三位数的各位数字的立方和等于这个数本身的数。我们需要100至999之间水仙花之和。 首先,我们需要找到所有的水仙花数。我们可以循环从100到999,对每一个数进行判断。如果该数满足水仙花数的定义,则将其加入到结果中。 具体的步骤如下: 1. 初始化结果为0。 2. 循环从100到999。 3. 在循环中,对当前的数进行判断是否为水仙花数。 4. 若为水仙花数,则将其加到结果中。 5. 循环结束后,结果即为所水仙花之和。 以下是具体的代码实现: sum = 0 for num in range(100, 1000): # 获取各位数字 hundreds = num // 100 tens = (num % 100) // 10 units = num % 10 # 判断是否为水仙花数 if (hundreds**3 + tens**3 + units**3) == num: sum += num 最后,输出的sum即为100至999之间水仙花之和。 说明:水仙花数的个数有限,且每个数都被计算了一次,所以该算法的时间复杂度为O(1),即常数时间复杂度。 ### 回答3: 水仙花数是一个三位数的各位数字的立方和等于这个数本身的数。在100-999之间的三位数中,我们可以逐个判断每个数是否满足水仙花数的条件,并将满足条件的数相加,最后得到水仙花之和。 首先,我们可以用一个循环从100开始到999结束,依次判断每个三位数是否为水仙花数。对于每个数,我们需要将其百位、十位和个位分别取出来,然后出它们的立方和。如果立方和等于这个数本身,则将这个数加入到水仙花之和中。 具体的步骤如下: 1. 初始化一个变量sum为0,用于记录水仙花之和。 2. 开始一个循环,从100到999,依次判断每个三位数是否为水仙花数。 3. 对于每个数,提取出它的百位、十位和个位。 4. 计算立方和,即将百位数的立方、十位数的立方和个位数的立方相加。 5. 判断立方和是否等于数本身,如果满足则将该数加入到sum中。 6. 循环结束后,得到的sum即为100-999之间水仙花之和。 请注意,在立方和时可以使用数学库中的幂运算函数,如pow函数。当然,我们也可以采用简单的方法手动进行立方运算。 最后,按照上述步骤计算得出的水仙花之和为xxxx。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值