基础练习7:特殊的数字

问题描述
  153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333。编程求所有满足这种条件的三位十进制数。
输出格式
  按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。

思路:
通过for循环,100~999,满足三位数的条件,满足从小到大的顺序输出。通过整除运算 / 和取余运算 % 将各位数字存放在不同变量里,再通过if语句判断,符合条件的输出。注意求立方不可以a^3,可以直接a * a * a,或者在开头加一句#include ,便可用幂函数pow(a,3)。
但这个方法不具有广泛性,只针对这道题,想了解更多的可以看后面的补充内容
代码:

#include 
#include 
int main()
{
    int a,b,c;
    int i;      
    for(i=100;i<1000;i++)    //满足三位数的条件,满足从小到大的顺序输出 
    {                       //遍历每个三位数  
        a=i%10;       //求得个位数 
        b=i/10%10;    //求得十位数
        c=i/100%10;   //求得百位数 
        if((pow(a,3)+pow(b,3)+pow(c,3))==i)                 
            printf("%d\n",i);
    }
return 0;
}

评测结果.png

补充
当题目给定的不是三位数,而是七位数、八位数时,再用a、b、c……的变量去存放各位数字是不理想的,故我们可以通过while循环来实现,用数组来存放各位数字,同时用变量sum来存放立方和。
代码:

#include 
#include 
int main()
{
    int i,num;
    int s[10];      
    for(i=100;i<1000;i++)    //满足三位数的条件,满足从小到大的顺序输出 
    {                       //遍历每个三位数  
        num = i;
        int m = 0;
        int sum = 0;
        while(num!=0)
        {
            s[m]=num%10;
            num/=10;
            sum+=pow(s[m++],3);
        }
        if(sum==i)                 
            printf("%d\n",i);
    }
return 0;
}
评测结果.png

运行结果:


基础练习7:特殊的数字_第1张图片
运行结果.png

你可能感兴趣的:(基础练习7:特殊的数字)