“公鸡三文一只,母鸡两文一只,小鸡一文三只”
(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;
}