C語言 百錢買白雞問題
阿新 • • 發佈:2019-01-27
“公雞三文一隻,母雞兩文一隻,小雞一文三隻”
(495000 Times)
#include <stdio.h> #include <stdlib.h> int main() { int i, j, k, sum = 0; for(i = 1; i <= 33; i++) { for(j = 1; j <= 50; j++) { for(k = 1; k <= 300; k++) { sum++;/*if(i * 3 + j * 2 + k / 3 == 100 && i + j + k == 100 && k % 3 == 0) sum++;//printf("公雞%d\n母雞%d\n小雞%d\n", i, j, k);*/ } } } printf("%d", sum); return 0; }
可以簡化為雙重迴圈(1650 Times)
#include <stdio.h> #include <stdlib.h> int main() { int i, j, k, sum = 0; for(i = 1; i <= 33; i++) { for(j = 1; j <= 50; j++) { k = 100 - i - j;//if(i * 3 + j * 2 + k / 3 == 100 && i + j + k == 100 && k % 3 == 0) sum++; } } printf("%d", sum); return 0; }
i 確定時 j 的範圍可以進一步確定(800 Times)
#include <stdio.h> #include <stdlib.h> int main() { int i, j, k, sum = 0; for(i = 1; i <= 33; i++) { for(j = 1; j <= (100 - 3 * i) / 2; j++) { k = 100 - i - j;//if(i * 3 + j * 2 + k / 3 == 100 && i + j + k == 100 && k % 3 == 0) sum++; } } printf("%d", sum); return 0; }
兩式聯立可得:i = 25 - 5/8 * j,所以 j = 8、16、24、32,i = 20、15、10、5.(4 Times)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, k, sum = 0;
for(i = 5, j = 32; i <= 20; i += 5, j -= 8)
{
k = 100 - i - j;
sum++;
}
printf("%d", sum);
return 0;
}