解题思路:
首先,找到这类数的上限,也就是每位取最大值9,若有7位数,9的5次方乘以7结果是413343,若有8位数,9的5次方乘以8结果是472392,还是6位数,若再增加位数:设此数为N,N的位数为x,x大于6的话,每增加1位,原数增加10的x次方,而其五次方数最多只增加59049(小于10的6次方),所以N的每位五次方求和的最大值一定小于N(当x>6)。找到上限后,只需要考察六位数以内的五次方数,用C语言描述就是:
#include<stdio.h> #define N 999999 int main(){ unsigned long long i,j,k,t; for(i=2;i<N;i++){ t=i; k=0; while(t){ j=t%10;//取出末位 k+=j*j*j*j*j;//加上末位数字的五次方 t/=10;//将更高位调整到末位 } if(k==i) printf("%llu\n",i); } return 0; }
注意事项:
测试得到数据后直接输出计算结果。
参考代码:
#include<stdio.h> int main(){ printf("4150\n4151\n54748\n92727\n93084\n194979\n"); return 0; }
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:551 |
C语言训练-计算1977!* (C语言代码)浏览:890 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)scanf后面加个getchar(),收掉回车符,就可以用gets了浏览:1144 |
简单编码 (C++代码)浏览:675 |
时间转换 (Java代码)浏览:572 |
C语言训练-数字母 (C语言代码)浏览:582 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:749 |
wu-理财计划 (C++代码)浏览:827 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:543 |
【亲和数】 (C语言代码)浏览:597 |