c语言题目:几个学生一起买小吃,共花钱100元,其中每个大学生花5元,每个中学生花3元,每个小学生花1元,

发布时间:2024-05-14 19:15 发布:上海旅游网

问题描述:

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)
{

热点新闻