narcissistic number 3에서 9 자리 숫자를 찾고 있습니다. 작업 코드가 있지만 중첩 루프는 사용하기가 번거 롭습니다. 재귀를 사용할 수있을 것 같아요, 어떻게? 귀하의 num
C에서 중첩 for 루프를 단순화
#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;
}
를 확인? – Sulthan
1 분 걸릴 것 같아요. –
서술 된 것처럼 정수 오버플로가 발생하지 않으면 놀랄 것입니다. bignum 라이브러리를 조사하십시오. – unwind