找尋此數,因 abcde > fghij,所以 fghij >= 1234,因為如果小於 1234 的數,都會違反條件。
首先,寫一判斷兩數符合條件之函式:
int check(int i, int j)主程式則是要從 fghij = 1234,持續判斷到 abcde >= 100000 為止。 C 語言程式碼如下:
{
int tmp, k, repeat[10] = {0};
for (k = 0 ; k < 5; k ++)
{
tmp = i % 10;
if (repeat[tmp]) return 0;
repeat[tmp] = 1;
i /= 10;
tmp = j % 10;
if (repeat[tmp]) return 0;
repeat[tmp] = 1;
j /= 10;
}
return 1;
}
abcde = 1234 * n, fghij = 1234;
count = 0;
if (caseNum ++ != 0) printf("\n");
for (; abcde < 100000; abcde += n, fghij ++)
if (check(abcde, fghij))
printf("%05d / %05d = %d\n", abcde, fghij, n), count ++;
if (count == 0) printf("There are no solutions for %d.\n", n);
By David.K
p725題目連結
回ACM題庫目錄
回首頁
沒有留言:
張貼留言