class Program
{
static void Main(string[] args)
{
//百钱百鸡问题:
// 公鸡5元钱一只,母鸡3元钱一只,小鸡1元钱三只.现在有一百块钱,正好买一百只鸡有多少种情况?
方法1:按钱数考虑
考虑公鸡5元一只,可以把其设为X,母鸡3元一只,可以把其设为Y,小鸡一元3只,把其设为Z,则可以得出:5X+3Y+Z/3=100;
满足的情况:1、X+Y+Z==100; 2、5X+3Y+Z/3==100; 3、Z%3==0//Z必须为3的整数倍
int X;
int Y;
int Z;
//公鸡的变化:应该从0到100,公鸡所用的钱数:可能买0只,用到0元;可能买20只,用了100元
for (X = 0; X <= 100; X++)
{
//母鸡的变化:从0到100
for (Y = 0; Y <= 100; Y++)
{
//小鸡的变化:从0到100
for (Z = 0; Z <= 100; Z++)
{
if ((X + Y + Z == 100) && (5 * X + 3 * Y + Z / 3 == 100) && (Z % 3 == 0))
{
Console.WriteLine("买了公鸡{0}只,母鸡{1}只,小鸡{2}只", X, Y, Z);
}
}
}
}
方法2:
for (int i = 0; i <= 20; i++)
{
for (int j = 0; j <= 33; j++)
{
if ((100 - i - j) % 3 == 0)
{
if (i * 5 + j * 3 + (100 - i - j) / 3 == 100)
{
Console.WriteLine("买了公鸡{0}只,母鸡{1}只,小鸡{2}只", i, j, 100 - i - j);
}
}
}
}
Console.ReadKey();
}
}