问题描述:
c语言题目:几个学生一起买小吃,共花钱100元,其中每个大学生花5元,每个中学生花3元,每个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解
问题解答:
#include <stdio.h>
int main()
{
int y,x;
int cnt = 0;
for (x = 1; x < 19; x++)
{
for (y = 1; y < 32; y++)
{
if (100-5*x-3*y>0)
{
cnt ++;
printf ("%d %d %d\n",x,y,100-5*x-3*y);
}
}
}
printf("共有%d种", cnt);
return 0;
}
#include <stdio.h>
int main(int argc, char *argv[])
{
int x;//大学生
int y;//中学生
int z;//小学 生
int count = 0;
//保证都不为0
for (x = 1; x < 19; x++)
{
for (y = 1; y < 32; y++)
{
for (z = 1; z < 93; z++)
{
if (5 * x + 3 * y + z == 100)
{
count ++;
printf ("%d %d %d\n", x, y, z);
}
}
}
}
printf("共有%d种", count);
return 0;
}
设大中小学生为xyz
则:5x+3y+z=100
当x=0时3y+z=100是一条直线,在坐标轴里面可以画出来
当y=0时,5x+z=100是一条直线,在坐标轴里面可以画出来
当z=0时,5x+3y=100也是一条直线,在坐标轴里面可以画出来
把这三种情况下的坐标点加起来,就是里面的解(当然是整数,只有两个坐标都为整数,并且交于直线的才算)
for (x = 1; x < 19; x++)
{
for (y = 1; y < 32; y++)
{
for (z = 1; z < 93; z++)
{
if (5 * x + 3 * y + z == 100)
{