依據以上卡布列克數解說,加上這範圍不超過 40000,所以要有一些特殊條件控制分割的方法,以下為關鍵程式碼:
isPut = 0;
for (j = s; j <= e; j ++)
{
recode = j * j;
mul = 10;
for (k = 0; k < 4; k++)
{
g = 0;
while (recode / mul != 0 && recode % mul != 0)
{
if (recode / mul + recode % mul == j)
{
printf("%d\n",j);
isPut = 1;
g = 1;
break;
}
mul *= 10;
}
if (g) break;
mul *= 10;
}
}
if (!isPut)
printf("no kaprekar numbers\n");
(註:s 為開始範圍,e 為結束範圍)
By David.K
p974題目連結
回ACM題庫目錄
回首頁
沒有留言:
張貼留言