韩信点兵问题

第一个问题

/*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);
		}
	 } 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值