第一个问题
/*Description
淮安民间传说着一则故事——“韩信点兵”,其次有成语“韩信点兵,多多益善”。
相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、
五人一排、七人一排的变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。
输入三个非负整数a、b、c,表示每种队形排尾的人数(a<3,b<5,c<7),
输出总人数的最小值或报告无解(No answer)。已知总人数不小于10,不超过100.
Input
输入数据包括多组,每组包含三个非负整数a、b、c,每组数据单独占一行。
Output
对于每组输入数据,输出对应的总人数或报告无解,每组输出占一行。
Sample Input
2 1 6
2 1 3
Sample Output
41
No answer*/
#include <stdio.h>
#define N 2
int main()
{
int a[N][3],i,j,b,flag;
for(i = 0;i < N;i++)
{
for(j = 0;j < 3;j++)
{
switch(j)
{
case 0:{
scanf("%d",&b);
if(b < 3)
a[i][j] = b;
break;
}
case 1:{
scanf("%d",&b);
if(b < 5)
a[i][j] = b;
break;
}
case 2:{
scanf("%d",&b);
if(b < 7)
a[i][j] = b;
break;
}
}
}
}
for(i = 0;i < N;i++)
{
flag = 0;
for(j = 10;j < 100;j++)
{
if(j % 3 == a[i][0] && j % 5 == a[i][1] && j % 7 == a[i][2])
{
printf("%d\n",j);
flag = 1;
break;
}
}
if(flag == 0)
{
printf("No answer\n");
}
}
}
第二个问题
/*Description
相传有一次韩信带1500名兵士打仗,战死约m到n人,为清点人数,韩信让士兵变换
队列站队,站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人。
请计算出可能剩余的士兵人数。
Input
两个正整数m和n。
Output
剩余的士兵人数。如有多个解,则按照从小到大的顺序每行输出一个解,
即每个单独占一行。
Sample Input
1200 1400
Sample Output
104
209*/
#include <stdio.h>
int main()
{
int m,n,i,j;
scanf("%d %d",&m,&n);
for(i = n;i >= m;i--)
{
j = 1500 - i;
if(j % 3 == 2 && j % 5 == 4 && j % 7 == 6)
{
printf("%d\n",j);
}
}
}