基础练习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; }


基础练习7(特殊的数字)
文章图片
评测结果.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; }

基础练习7(特殊的数字)
文章图片
评测结果.png
【基础练习7(特殊的数字)】运行结果:

基础练习7(特殊的数字)
文章图片
运行结果.png

    推荐阅读