韩信点兵的问题求解方法
来源:互联网 发布:斗龙战士2玩具淘宝 编辑:程序博客网 时间:2024/06/05 11:45
问题描述:
一队士兵:人数不知,每3个人一组,余两个人;每5人一组,余3个人;每7个人一组,余5个人;每11个人一组,余4个人。
至少多少人?若已知人数为5000-10000 则共有多少个答案?
试探法?代码如下
#include<iostream>
using namespace std;
int main(){
void num();
num();
return 1;
}
//直接试探法求解
void num(){
for(int i=0;i<10000;i++)
{
if(i%3==2&&i%5==3&&i%7==5&&i%11==4)
cout<<i<<" ";
}
}
显然对于数值大的花费要求不合理,我们选择一个个的条件去求解答案。
代码如下:
#include<iostream>
using namespace std;
int main(){
void num();
num();
return 1;
}
//满足条件求解
void num(){
int n=2;//满足条件一最小解
while(n%5!=3) n+=3;//保证1满足后,满足条件二最小解 2,5,8
while(n%7!=5) n+=15;//保证1,2满足后,满足条件三最小解 23,38,53,68
while(n%11!=4) n+=105;//保证1,2,3满足后,满足条件四的最小解 173,278,383,488
cout<<n<<" ";//输出满足条件的最小解
//当知道人数为5000-10000时
while(n<=10000) {
n+=1155;//保证满足1,2,3,4条件下的所有值
if(n>=5000&&n<=10000) cout<<n<<" ";
}
}
性能分析:
这种方法需要运算的次数其实很少,根据注释来看,只要几次运算我们就得到了结果,显然是我们符合求解性能的要求。
- 韩信点兵的问题求解方法
- 韩信点兵问题的神解法
- 韩信点兵问题
- 韩信点兵问题
- 韩信点兵问题
- 韩信点兵问题
- 韩信点兵问题
- 韩信点兵问题
- 韩信点兵问题
- 韩信点兵问题的简单算法(downmoon)
- 韩信点兵问题的简单算法(downmoon)
- 五个求解算法问题的方法
- 约瑟夫问题的笨方法求解程序
- 幻方问题的 求解方法
- 汉诺塔问题的递归求解方法
- 汉偌塔问题求解方法
- TSP问题求解方法
- 韩信点兵问题------凌风
- C++析构函数为什么要为虚函数
- LeetCode 409. Longest Palindrome 解题报告
- 前端技能路线详解:真正的从入门到放弃
- ViewPager与PagerAdapter配合实现Tab效果
- UITableView性能优化整理
- 韩信点兵的问题求解方法
- 唯品会的订单分库分表实践总结以及关键步骤
- Android 笔记 读取style文件的属性
- Oracle 中的JOIN
- Windows下多个Python版本共存
- Longest Substring Without Repeating Characters from LeetCode
- HDU 5914 Triangle 【构造】 (2016中国大学生程序设计竞赛(长春))
- 认识css样式(第二部分-文字排版)
- 文章标题