POJ1006:Biorhythms
来源:互联网 发布:国家发改委 大数据 编辑:程序博客网 时间:2024/06/05 08:07
POJ1006
有三个周期,分别为23,28,33天。一个周期中有一天为峰值。
给出三个峰值日期,和当前日期,求最少要经过多少天,三个峰值同时出现。
中国剩余定理模板题。
【代码】
#include <cstdio>#include <iostream>#include <algorithm>#define N 2335#define INF 0x7fffffffusing namespace std;typedef long long ll;ll read(){ ll x=0,f=1;char ch=getchar(); while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();} while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return x*f;}int ans,M=1,st,Case;int a[4],b[4]={0,23,28,33};void Exgcd(int a,int b,int &x,int &y){ if(b) { Exgcd(b,a%b,y,x); y-=(a/b)*x; } else x=1,y=0;}int CRT(int a[],int b[],int n){ int x,y,rtn=0;M=1; for(int i=1;i<=n;i++) M*=b[i]; for(int i=1;i<=n;i++) { int mi=M/b[i]; Exgcd(mi,b[i],x,y); rtn=(rtn+a[i]*mi*x)%M; } if(rtn<0) rtn+=M; return rtn;}int main(){ while(1) { for(int i=1;i<=3;i++) a[i]=read(); st=read();if(st==-1) break; ans=CRT(a,b,3); if(ans<=st) ans+=21252; printf("Case %d: the next triple peak occurs in %d days.\n",++Case,ans-st); } return 0;}
阅读全文
0 0
- POJ1006 Biorhythms
- POJ1006 Biorhythms
- POJ1006 Biorhythms
- Poj1006 Biorhythms
- POJ1006 Biorhythms
- Biorhythms (POJ1006)
- poj1006 Biorhythms
- POJ1006-Biorhythms
- POJ1006-Biorhythms
- 【poj1006】 Biorhythms
- poj1006 Biorhythms
- POJ1006 Biorhythms
- [poj1006]Biorhythms
- POJ1006:Biorhythms
- POJ1006 Biorhythms
- POJ1006-Biorhythms
- POJ1006 Biorhythms
- poj1006 Biorhythms
- DHUOJ 2017052403
- 存储过程例子
- 表达式,判断奇偶数
- Json
- python学习--2字符串
- POJ1006:Biorhythms
- bzoj2582[Usaco2012Jan]Bovine Alliance
- c++标准库笔记:13.4.4 Stream的状态和异常
- 运算符
- LeetCode 43.Multiply Strings & 46.Permutations & 47.Permutations II
- 自动化测试基础
- 线段树
- java面试基础题之二
- Housewife Wind 【LCA转RMQ 求最短路+边权修改】or 【树链剖分】