Java三齐王乱点兵算法,【ACM】韩信点兵算法
题目是:韩信点兵
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至5报数,最末一个士兵报的数为1. 再按从1至6报数,最末一个士兵报的数为5. 再按1至7报数,最末一 ...
- 韩信点兵python算法_韩信点兵和搬砖问题
「你将学到什么?」 编程实战算法与世界五百强面试,不是念PPT,我们讲的就是实战与代码实现与企业应用.程序 = 数据结构 + 算法 --图灵奖得主,计算机科学家N.Wirth(沃斯) 作为程序员,我们 ...
- 经典算法——韩信点兵问题的简单算法
搞开发的人都需要积累一些经典算法,以备不时之须. 搞开发也有好几年了,积累的一些算法一直没做过整理,这段时间无聊就把这些算法整理以下,以备以后之用. 本文是关于阶梯的一个算法,用到了剩余定理算法,分享 ...
- 算法到底该怎么学?算法数据结构Java编程超全干货!(ACM金牌选手分享超牛学习路径~)...
怎么才能最快的学习算法呢?(ps:文末附2022大厂面试真题~) 这是很多知友都关心的话题,作为一个ACM金牌选手,根据我的专业角度,特给大家来分享一下! 学习算法,切记不要一上来就开始啃<算法 ...
- 优秀博客链接(linux c/c++ java go php android ios 前端 j2ee windows linux 算法 ACM 深度/机器学习 AI opencv nlp)
pudn 阿甘兄 前端 服务端 底层 移动端 大数据 云计算 AI 培训机构的课程差不多就这一套了 大数据 AI NLP 高等数学 LeetCode.<数据结构与算法之美>学习笔记.AI ...
- 韩信点兵(hanxin)--算法竞赛经典习题2-2:相传韩信才智过人,从不清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,他每次只要掠一眼队伍的排尾就知道总数(C++实现)
韩信点兵(hanxin)–算法竞赛经典习题2-2:相传韩信才智过人,从不清点自己军队的人数,只要让士兵先后以三人一排.五人一排.七人一排地变换队形,他每次只要掠一眼队伍的排尾就知道总数. (C++实现 ...
- 优秀博客链接(linux c/c++ java go php android ios 前端 j2ee windows linux 算法 ACM AI 深度/机器学习 opencv nlp)
pudn 阿甘兄 前端 服务端 底层 移动端 大数据 云计算 AI 培训机构的课程差不多就这一套了 LeetCode.<数据结构与算法之美>学习笔记.AI 前端资料学习,vue.js re ...
- java三次指数平滑_时间序列挖掘-预测算法-三次指数平滑法(Holt-Winters)
所有移动平均法都存在很多问题. 它们都太难计算了.每个点的计算都让你绞尽脑汁.而且也不能通过之前的计算结果推算出加权移动平均值. 移动平均值永远不可能应用于现有的数据集边缘的数据,因为它们的窗口宽度是 ...
- 机器学习之Naive Bayes算法:日撸Java三百行day58-59
一.什么是Naive Bayes算法 Naive Bayes(NB)算法,亦称为朴素贝叶斯算法,是一个经典的.有代表性的分类算法.该算法是基于贝叶斯定理的分类方法,也是一种用后验概率公式推导出的算法. ...
最新文章
- PCL:自定义创建带颜色的点云保存后rgb是一个很大的数,由x y z rgb解包为x y z r g b
- spring配置文件_SpringBoot入门建站全系列(二十三)配置文件优先级及自定义配置文件...
- hdu4020简单想法题
- 成功解决你没有权限访问,请与网络管理员联系图文教程
- Oracle客户端安装教程
- 成为 Linux 终端高手的七种武器
- Postgres客户端编码问题
- Hadoop:mapreduce的splitsize和blocksize
- 作业-python常用库类 numpy+pandas
- 从零实现SpringBoot简易读写分离,也不难嘛!
- java io读书笔记(8)FileInputStream/FileOutputStream的应用
- Node JS环境设置– Node.js安装
- android经典动态壁纸,android中自定义动态壁纸
- ASP.NET Core使用微软官方类库实现汉字简繁切换以及转拼音
- Python 自动化开发【初级】到精通-张子夜-专题视频课程
- 基于文件操作的学生信息管理系统(含登录验证)
- 3D导航栏翻转(css)
- iOS12 系统 webView加载H5页面,反复点击网页中视频播放 退出视频全屏 闪退解决方式。
- Scala与Java语言的差异
- 计算机制作表格英语怎么说,表格用英语怎么说
热门文章
- 固定资产折旧方法与计算公式,固定资产的折旧方法有几种?
- 阿里巴巴矢量库icon font的使用
- (附源码)SSM养老院管理信息系统JAVA计算机毕业设计项目
- Toad 使用快速入门(转贴)
- Kubernetes Pod冗余策略
- 聚焦科技新能源关注环保天更蓝
- 设计到生产:流程名词解释
- 2021年起重机司机(限桥式起重机)多少分及格及起重机司机(限桥式起重机)考试内容
- Delphi DeviceIoControl函数
- 角色转移至其他账号不能转服务器,《CF手游》账号数据转移要求说明 跨系统角色转移卡什么数据不可转移...