计算导论与程序设计某次上机考试共出了4道题,其中每名同学都至少做对了一道题。根据已知条件求做对了2、3、4题的可能的人数。。
输入格式:
只有一行,为两个用空格分隔的正整数m和n,分别代表参加考试的总人数和总的解题数。
输出格式:
有若干行,每一行为一组解,格式均为用空格分隔的三个整数,依次代表解2题的人数,解3题的人数和解4题的人数。多组解的输出顺序按解2题人数由小到大排序,如果解2题的人数相同则按解3题的人数由小到大排序。所有测试数据保证可以用int存储。
输入样例:
15 20
输出样例:
0 1 1
1 2 0
2 0 1
3 1 0
5 0 0
代码如下:
#include<stdio.h>
int main()
{
//次上机考试共出了4道题
//每名同学都至少做对了一道题
int m, n;
scanf("%d %d", &m, &n);//n>=m
//m--->参加考试的人,,n-->做出的题数
int x, y, z;//2 3 4
for (x = 0; x <= n - m; x++)
for (y = 0; y <= n - m; y++)
for (z = 0; z <= n - m; z++)
if (x + y * 2 + z * 3 == n - m)
printf("%d %d %d\n", x, y, z);
return 0;
}
还是穷举法;
还有题目中要读清楚,
依次代表解2题的人数,解3题的人数和解4题的人数
这个代表着,解了两道题的人数,解了三道题的人数,,,,
然后每个人都至少做一道题 看代码就好