3桁から9桁の自己陶酔的な数字を探しています。動作するコードはありますが、ネストされたループの使用は面倒です。再帰を使用できると思いますが、どうですか?
#include "stdafx.h"
#include <time.h>
int power(int a,int b)
{
int t=1,i;
for (i=0;i<b;i++)
t*=a;
return t;
}
int _tmain(int argc, _TCHAR* argv[])
{
double t0=clock();
int a,b,c,d,e,f,g,h,i;
int len=9;
for (a=1;a<=9;a++)
for (b=0;b<=9;b++)
for (c=0;c<=9;c++)
for (d=0;d<=9;d++)
for (e=0;e<=9;e++)
for (f=0;f<=9;f++)
for (g=0;g<=9;g++)
for (h=0;h<=9;h++)
for(i=0;i<=9;i++)
{
int num=10*(10*(1000000*a+100000*b+10000*c+1000*d+100*e+10*f+g)+h)+i;
if (num==power(a,len)+power(b,len)+power(c,len)+power(d,len)+power(e,len)+power(f,len)+power(g,len)+power(h,len)+power(i,len))
printf(" %d ",num);
}
printf("\n耗时: %f s",(clock()-t0)/CLOCKS_PER_SEC);
return 0;
}