2010年3月19日 星期五

Problem 944 Happy Numbers

此題輸入兩個數字後,判斷這兩數之間有哪些數是Happy Number以及這些Happy Number的長度為多少即可。

以下為關鍵程式碼:
int isHappyNumber(int n)
{
int i, len = 1, sum = 0, recode[50];

if (n == 1) return len;
while (sum != 1)
{
recode[len ++] = n;
sum = 0;
for (i = 10; (n / i) != 0 || (n % i) != 0; )
{
sum += (n % i) * (n % i);
n /= i;
}
n = sum;
for (i = 0; i < len; i ++)
if (recode[i] == sum)
return 0;
}
return len;
}

則主程式內只須這樣寫:
for (k = i; k <= j; k++)
if (isHappyNumber(k))
printf("%d %d\n", k, isHappyNumber(k));

By David.K

p944題目連結
回ACM題庫目錄
回首頁

沒有留言: