目的:求解队伍人数
要求:
输入:三人一排剩余无队人数,五人一排剩余无队人数,七人一排剩余无队人数,到文件末尾结束
输出:总人数最小值或报告无解,人数有上下限要求[10, 100]
样例输入:2 1 6
2 1 3
样例输出:41
No answer
思路:循环结构(多个输入,文件结束用scanf函数返回值判断;每组输入循环迭代找解),暴力求解。
因为是根据三次排队剩余人数判断最小总人数,即总人数对三次排队每队人数取余分别为输入的三个数
代码如下:
#include<stdio.h> #define MinNum 10 #define MaxNum 100 int main() { int a, b, c; while(scanf("%d%d%d", &a, &b, &c) == 3){//输入无误 int found = 0; int iter = MinNum; for(; iter <= MaxNum; iter++){ if(!((iter - a) % 3) && !((iter - b) % 5) && !((iter - c) % 7)){ found = 1; break; } } if(found){ printf("%d\n", iter); } else{ printf("No answer\n"); } } return 0; }
优化:因为循环采取递增,所以一旦找到即为最小总人数,可以立刻结束循环。