题目是:韩信点兵

Time Limit:

1000MS Memory

Limit:65536

Description :

带队人员想知道一共有多少人参加了活动。

于是分别让同学们

6人一列,5人一列,7人一列,13人一列站队。

现已知各种站队的余项,试求最少有多少人参加了这次的活动。

Input

四个正整数,用空格分开

Output

最少的人数。

Sample Input

1 1 4 11

2 3 2 8

Sample Output

1831

1178

算法分析:

韩信点兵是种类型的算法,举个例子就知道怎么解这种算法问题了:

相传韩信带兵时有次急需清点人数。他只大概知道人数在1000-1100。

于是他命令士兵3人一排,结果多出2名;接着命令士兵5人一排,结果多出3名;

他又命令士兵7人一排,结果又多出2名。然后韩信马上向将士们宣布:我军有1073名勇士!那他是怎么算出的呢?

1:先算6、5、7、13的最小公倍数6*5*7*13=2730

2:再算符合除以6余2,除以5余3,除以7余2,除以13余1的最小值: 除以3余2的数:5, 8, 11, 14, 17, 20, 23,

26…

除以5余3的数:8, 13, 18, 23, 28…

除以7余2的数:9,16,23,30…

由上得出除以3余2,除以5余3,除以7余2的最小值为23

韩信原有1500名士兵,苦战一场死伤四五百。

现剩余士兵应在1000-1100之间,并且现存的士兵数应可以被105整除并且余数是23.

所以现存士兵数应该是105×10+23=1073人。

在上面这道ACM题里,只需算出最小值即可,即只要算出第2步里的最小值,那就是答案了,下面是程序:

//点击下载韩信点兵.c

#include

#include

int main()

{

int i, max, flag;

int dividend[4], divisor[4], quotient[4], remainder[4];

divisor[0] = 6;

divisor[1] = 5;

divisor[2] = 7;

divisor[3] = 13;

while(EOF != scanf("%d%d%d%d", remainder, remainder+1, remainder+2,

remainder+3))

{

memset(quotient, 0, sizeof(quotient));

while(1)

{

for(i=0; i<4; i++)

{

dividend[i] = divisor[i]*quotient[i] + remainder[i];

}

max = 0;

for(i=0; i<4; i++)

{

if(max < dividend[i])

max = dividend[i];

}

flag = 1;

for(i=0; i<4; i++)

{

if(max != dividend[i])

{

flag = 0;

quotient[i]++;

}

}

if(flag)

break;

}

printf("%d\n", dividend[0]);

}

return 0;

}

Java三齐王乱点兵算法,【ACM】韩信点兵算法相关推荐

  1. 枚举算法:韩信点兵。

    韩信点兵.韩信在点兵的时候,为了知道有多少名士兵,同时又能保住军事机密,便让士兵排队报数. 按从1至5报数,最末一个士兵报的数为1. 再按从1至6报数,最末一个士兵报的数为5. 再按1至7报数,最末一 ...

  2. 韩信点兵python算法_韩信点兵和搬砖问题

    「你将学到什么?」 编程实战算法与世界五百强面试,不是念PPT,我们讲的就是实战与代码实现与企业应用.程序 = 数据结构 + 算法 --图灵奖得主,计算机科学家N.Wirth(沃斯) 作为程序员,我们 ...

  3. 经典算法——韩信点兵问题的简单算法

    搞开发的人都需要积累一些经典算法,以备不时之须. 搞开发也有好几年了,积累的一些算法一直没做过整理,这段时间无聊就把这些算法整理以下,以备以后之用. 本文是关于阶梯的一个算法,用到了剩余定理算法,分享 ...

  4. 算法到底该怎么学?算法数据结构Java编程超全干货!(ACM金牌选手分享超牛学习路径~)...

    怎么才能最快的学习算法呢?(ps:文末附2022大厂面试真题~) 这是很多知友都关心的话题,作为一个ACM金牌选手,根据我的专业角度,特给大家来分享一下! 学习算法,切记不要一上来就开始啃<算法 ...

  5. 优秀博客链接(linux c/c++ java go php android ios 前端 j2ee windows linux 算法 ACM 深度/机器学习 AI opencv nlp)

    pudn 阿甘兄 前端 服务端 底层 移动端 大数据 云计算 AI 培训机构的课程差不多就这一套了 大数据 AI NLP 高等数学 LeetCode.<数据结构与算法之美>学习笔记.AI ...

  6. 韩信点兵(hanxin)--算法竞赛经典习题2-2:相传韩信才智过人,从不清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,他每次只要掠一眼队伍的排尾就知道总数(C++实现)

    韩信点兵(hanxin)–算法竞赛经典习题2-2:相传韩信才智过人,从不清点自己军队的人数,只要让士兵先后以三人一排.五人一排.七人一排地变换队形,他每次只要掠一眼队伍的排尾就知道总数. (C++实现 ...

  7. 优秀博客链接(linux c/c++ java go php android ios 前端 j2ee windows linux 算法 ACM AI 深度/机器学习 opencv nlp)

    pudn 阿甘兄 前端 服务端 底层 移动端 大数据 云计算 AI 培训机构的课程差不多就这一套了 LeetCode.<数据结构与算法之美>学习笔记.AI 前端资料学习,vue.js re ...

  8. java三次指数平滑_时间序列挖掘-预测算法-三次指数平滑法(Holt-Winters)

    所有移动平均法都存在很多问题. 它们都太难计算了.每个点的计算都让你绞尽脑汁.而且也不能通过之前的计算结果推算出加权移动平均值. 移动平均值永远不可能应用于现有的数据集边缘的数据,因为它们的窗口宽度是 ...

  9. 机器学习之Naive Bayes算法:日撸Java三百行day58-59

    一.什么是Naive Bayes算法 Naive Bayes(NB)算法,亦称为朴素贝叶斯算法,是一个经典的.有代表性的分类算法.该算法是基于贝叶斯定理的分类方法,也是一种用后验概率公式推导出的算法. ...

最新文章

  1. PCL:自定义创建带颜色的点云保存后rgb是一个很大的数,由x y z rgb解包为x y z r g b
  2. spring配置文件_SpringBoot入门建站全系列(二十三)配置文件优先级及自定义配置文件...
  3. hdu4020简单想法题
  4. 成功解决你没有权限访问,请与网络管理员联系图文教程
  5. Oracle客户端安装教程
  6. 成为 Linux 终端高手的七种武器
  7. Postgres客户端编码问题
  8. Hadoop:mapreduce的splitsize和blocksize
  9. 作业-python常用库类 numpy+pandas
  10. 从零实现SpringBoot简易读写分离,也不难嘛!
  11. java io读书笔记(8)FileInputStream/FileOutputStream的应用
  12. Node JS环境设置– Node.js安装
  13. android经典动态壁纸,android中自定义动态壁纸
  14. ASP.NET Core使用微软官方类库实现汉字简繁切换以及转拼音
  15. Python 自动化开发【初级】到精通-张子夜-专题视频课程
  16. 基于文件操作的学生信息管理系统(含登录验证)
  17. 3D导航栏翻转(css)
  18. iOS12 系统 webView加载H5页面,反复点击网页中视频播放 退出视频全屏 闪退解决方式。
  19. Scala与Java语言的差异
  20. 计算机制作表格英语怎么说,表格用英语怎么说

热门文章

  1. 固定资产折旧方法与计算公式,固定资产的折旧方法有几种?
  2. 阿里巴巴矢量库icon font的使用
  3. (附源码)SSM养老院管理信息系统JAVA计算机毕业设计项目
  4. Toad 使用快速入门(转贴)
  5. Kubernetes Pod冗余策略
  6. 聚焦科技新能源关注环保天更蓝
  7. 设计到生产:流程名词解释
  8. 2021年起重机司机(限桥式起重机)多少分及格及起重机司机(限桥式起重机)考试内容
  9. Delphi DeviceIoControl函数
  10. 角色转移至其他账号不能转服务器,《CF手游》账号数据转移要求说明 跨系统角色转移卡什么数据不可转移...