POJ1006 Biorhythms——剩余定理
来源:互联网 发布:北斗网络时间服务器 编辑:程序博客网 时间:2024/05/18 17:04
从水题开始解题报告。
problem address:http://poj.org/problem?id=1006
刚开始用一般算法,从一开始计数判断。WA了两次后提交通过。
代码如下:
//Memory=744K Time=282Ms
#include <iostream>
using namespace std;
int main()
{
int p,e,i,d,y,ct=1;
while(cin>>p>>e>>i>>d)
{
if (p==-1 && e==-1 && i==-1 && d==-1) break;
y = 1;
if (y<p) y=p;
if (y<e) y=e;
if (y<i) y=i;
for (;(y-p)%23!=0 || (y-e)%28!=0 || (y-i)%33!=0; y++);
y = (y-d)%21252;
if (y<=0) y = y+21252;//注意相减小于零的情况
cout<<"Case "<<ct<<": the next triple peak occurs in "<<y<<" days./n";
ct++;
}
return 0;
}
之后看了一下Discuss,认识了剩余定理。
剩余定理百度地址:http://baike.baidu.com/view/838598.htm
28*33*6=924*6=5544=1 mod 22
23*33*19=759*19=14421=1 mod 28
23*28*2=644*2=1288=1 mod 33
则5544*p +14421*e+1288*i -21252*n-d为所求答案
代码如下:
//使用剩余定理的代码Memory=748K Time=94Ms
#include <iostream>
using namespace std;
int main()
{
int p,e,i,d,y,ct=1;
while(cin>>p>>e>>i>>d)
{
if (p==-1 && e==-1 && i==-1 && d==-1) break;
y=5544*p+14421*e+1288*i;
y = y - y/21252*21252 - d;
if (y<=0) y = y+21252;
cout<<"Case "<<ct<<": the next triple peak occurs in "<<y<<" days./n";
ct++;
}
return 0;
}
以上。
- POJ1006 Biorhythms——剩余定理
- POJ1006-Biorhythms .中国剩余定理
- Poj1006 Biorhythms (中国剩余定理)
- Biorhythms(poj1006中国剩余定理)
- poj1006 Biorhythms 中国剩余定理
- POJ1006 - Biorhythms - 中国剩余定理
- POJ1006 Biorhythms 中国剩余定理
- POJ1006 Biorhythms【中国剩余定理】
- POJ1006 Biorhythms(中国剩余定理)
- poj1006 Biorhythms中国剩余定理
- poj1006--Biorhythms (中国剩余定理)
- Biorhythms(poj1006+中国剩余定理)
- 20160321 POJ1006 Biorhythms (中国剩余定理)
- poj1006 / hdu1370 Biorhythms (中国剩余定理)
- poj1006 Biorhythms(中国剩余定理)
- [POJ1006]Biorhythms(中国剩余定理)
- [POJ1006]Biorhythms(中国剩余定理)
- poj1006 Biorhythms(中国剩余定理)
- 确定对象被使用前巳先被初始化
- 开启"不明确行为"的潘多拉盒子——解释
- 程序员怎样学数学
- 算法学习二三事
- 算法学习二三事
- POJ1006 Biorhythms——剩余定理
- 程序人生--一个程序员对学弟学妹建议
- 程序人生成长发展中的一些感悟
- 不管做啥,都先把啥弄清楚了再说——fpc编译命令说明翻译
- 兴趣与坚持:程序员从初级到中级10个秘诀
- python常用插件
- 阅读优秀代码是提高开发人员修为的一种捷径
- 分享一个有趣的学习方法,欢迎一起探讨如何提高学习兴趣
- 漫画:如何写出好代码?