练习作业5: 韩信点兵 , 统计方案 , 出现最频的数

练习作业5: 韩信点兵 , 统计方案 , 出现最频的数



前排提示:百度搜题搜的爽,一直搜题一直爽

当然搜题就是交 就等着被放生吧88(狗头

本次题目理论上都应该可以独立完成✅


问题 A: 韩信点兵

序号:1055

题目描述

淮安民间传说着一则故事——“韩信点兵”,其次有成语“韩信点兵,多多益善”。韩信带1500名兵士打仗,战死四五百人,站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人。韩信马上说出人数:1049。如果我给你一些条件,你能给我满足条件的最小正整数么?

当然,这道题是简单的。给你的每组数据有三行数字,每行数字的第一个数是除数 d ,第二个数是余数 m,然后请你求出一个最小的正整数 n(n < 1000,000),此n能使这三行数字同时满足 n/d == x……m.

输入

第一行是数据的组数 nCase (n<=5),以下有3nCase行。每三行是一组数据,就是给你的三对数据。

输出

对于每组输入,输出一行,是所求得的最小正整数。

样例输入
2
3 2
5 4
7 6
9 2
7 3
6 5
样例输出
104
101
思路过程:

​ 看到韩信点兵,那当然是多多益善啦。那到底多不多呢,我们来看看。首先理解题目意思,第一个输入是nCase,就是数据的组数,和前几期一样。然后是3nCase行,意思就是说每三个是一组的。我们再来看输入的数据,每组数据第一个是除数d,第二个数是余数m

输入:
组数nCase
除数d1 余数m1
除数d2 余数m2
除数d3 余数m3
			* nCase

​ 读完后理解大概意思就是给出三组数,求出满足的最小数字n,使得n/d == i 余 m,(类似于最小公倍数?)判断条件就是if(n%d==m)

​ 先搭出框架,一个while循环,由输入的nCase决定做几次。(OJ提示,可以做一次输出一次,不算错误,不用最后一起输出)

while(nCase--)
{
   
	//循环体
	
}//这是做多少次的标准形式,因为输入nCase之后每做一次直减,最后做了n次就不做了

​ 然后我们定义除数和余数,由于每组三个,我们可以就定义六个数反复使用,由于是余数,这里用 % 。然后进行循环求解n,在这里我首先用了for循环,因为题目规定n<1000,000,所以我设n从1-1000,000for循环,满足三组条件即break跳出,最后输出n。

	for(n=0;n<1000000;n++)
		if(n%d1==m1&&n%d2==m2&&n%d3==m3)
				break;

​ 我们也可以使用while循环,n从1自增再进行判断,满足条件的第一个n就直接跳出输出。

	while(++n)//不标准
		{
   
			if(n%d1==m1&&n%d2==m2&&n%d3==m3)
            {
   	
                printf("%d\n",n);
				break;
            }
		}

​ 这样就完成了

Example Answer:
#include<stdio.h>
int main()
{
   
	int nCase,n,d1,d2,d3,m1,m2,m3;
	scanf("%d",&nCase);
	while(nCase--)
	{
   
		n=0;//n重置为0
		scanf("%d %d",&
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值