题目:
韩信点兵: 韩信有一队兵,他想知道有多少人,便让士兵排队报数。按从1至m1报数,最末一个士兵报的数为x1;按从1至m2报数,最末一个士兵报的数为x2;按从1至m3报数,最末一个士兵报的数为x3;……,按从1至mn报数,最末一个士兵报的数为xn。 请输出最少的人数。 输入:第一行为n 第二行到第n+1行依次为本次报数的数量和最后1个士兵报的数 输出:满足条件的最少人数。 输入非法数据时输出error 例如:输入: 4 5 1 6 5 7 4 11 10 输出:2111 |
分析:输入的n指明了会输入几组数据;而最少人数一定会满足减去最后一个士兵报的数后除报数的数量余数为零,且求的是最少人数,故从1开始循环开始
#include <stdio.h>
int main()
{
int times,x=0;
scanf("%d",×);
int ch[100][2];
for(int i=0;i<times;i++)
{
for(int c=0;c<2;c++)
{
scanf("%d",&ch[i][c]);
}
}
int m=1;
for(;x!=times;m++)
{
x=0;
for(int i=0;i<times;i++)
{
if(m!=ch[i][1]){
if((m-ch[i][1])%ch[i][0]==0)
{
x+=1;
}}
}
}
printf("%d",m-1);
return 0;
}