POJ 1006_Biorhythms
2016-01-07 12:52
288 查看
本题没什么编程难点,主要就是采用了中国剩余定理解题。
在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?”这个问题称为“孙子问题”,该问题的一般解法国际上称为“中国剩余定理”。下面说说我对该定理的理解。
首先确定3,5,7为俩俩互质的数,找出3和5的公倍数中最小的能使它%7=1的数,再找出3和7的公倍数中最小的能使它%5=1的数,最后找出5和7的公倍数中最小的能使它%3=1的数,它们是15,21,70。用着三个数分别乘以他们所取余的数7,5,3在题目中的余数2,3,2然后求和,之后再用这个所求的和取余3,5,7的最小公倍数105。即15*2+21*3+70*2=233,233%105=23。so,23即为所求。
...具体代码如下
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int p, e, i, d, kase = 0;
while (cin >> p >> e >> i >> d){
if (p == -1 && e == -1 && i == -1 && d == -1)
break;
int ans = (1288 * i + 14421 * e + 5544 * p - d) % (23 * 28 * 33);
if (ans <= 0)ans += 23 * 28 * 33;
cout << "Case " << ++kase << ": the next triple peak occurs in " << ans << " days." << endl;
}
return 0;
}
在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?”这个问题称为“孙子问题”,该问题的一般解法国际上称为“中国剩余定理”。下面说说我对该定理的理解。
首先确定3,5,7为俩俩互质的数,找出3和5的公倍数中最小的能使它%7=1的数,再找出3和7的公倍数中最小的能使它%5=1的数,最后找出5和7的公倍数中最小的能使它%3=1的数,它们是15,21,70。用着三个数分别乘以他们所取余的数7,5,3在题目中的余数2,3,2然后求和,之后再用这个所求的和取余3,5,7的最小公倍数105。即15*2+21*3+70*2=233,233%105=23。so,23即为所求。
...具体代码如下
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int p, e, i, d, kase = 0;
while (cin >> p >> e >> i >> d){
if (p == -1 && e == -1 && i == -1 && d == -1)
break;
int ans = (1288 * i + 14421 * e + 5544 * p - d) % (23 * 28 * 33);
if (ans <= 0)ans += 23 * 28 * 33;
cout << "Case " << ++kase << ": the next triple peak occurs in " << ans << " days." << endl;
}
return 0;
}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C++联合体转换成C#结构的实现方法
- C#实现的算24点游戏算法实例分析
- C++高级程序员成长之路
- C++编写简单的打靶游戏