可以这样理解——
#include "stdio.h"
int main(int argc,char *argv[]){
int n,m,m2,i,k;
printf("Please enter n & m(int 0<m,n<10000)...\n");
if(scanf("%d%d",&n,&m)!=2 || m<1 || m>9999 || n<1 || n>9999){
printf("Input error, exit...\n");
return 0;
}
for(m2=0,i=m;i;m2+=(i%10)*(i%10),i/=10);
for(k=0,i=m*m2;i<=n;i+=m)
if(i/m==m2)
printf(++k%5 ? "%d\t" : "%d\n",i);
printf(k%5 ? "\n" : !k ? "Didn't find this number...\n" : "");
return 0;
}
运行样例:
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/bba1cd11728b47109dc95ea8cecec3fdfd0323eb?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
也可以这样理解——
#include "stdio.h"
int main(int argc,char *argv[]){
int n,m,m2,i,k,t;
printf("Please enter n & m(int 0<m,n<10000)...\n");
if(scanf("%d%d",&n,&m)!=2 || m<1 || m>9999 || n<1 || n>9999){
printf("Input error, exit...\n");
return 0;
}
for(k=0,i=m;i<=n;i+=m){
for(m2=0,t=i;t;m2+=(t%10)*(t%10),t/=10);
if(i/m==m2)
printf(++k%5 ? "%d\t" : "%d\n",i);
}
printf(k%5 ? "\n" : !k ? "Didn't find this number...\n" : "");
return 0;
}
运行样例:
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/11385343fbf2b211502e242ac78065380cd78e56?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
哪种理解是正确的?