北大ACM(POJ1006-Biorhythms)

Question:http://poj.org/problem?id=1006
问题点:孙子定理
 Memory: 248K        Time: 0MS
Language: C++ Result: Accepted
3
#include <iostream> using namespace std;
int getGCD(int a,int b)//Greatest Common Divisor
{
if(a<b){a+=b;b=a-b;a=a-b;}
if(b==) return ;
else if(a%b==) return a/b;
else return getGCD(b,a%b);
}
int getLCM(int a,int b)//Lowest Common Multiple
{
return a*b/getGCD(a,b);
}
int getMod1(int a,int b)//get N. a*N mod b ==1
{
int N=;
while(a*N%b!=){N++;}
return a*N;
}
int main()
{
int p,e,i,d,cnt=;
int pe=getMod1(getLCM(,),);
int pi=getMod1(getLCM(,),);
int ei=getMod1(getLCM(,),);
while(true)
{
cin>>p>>e>>i>>d;
if(p==-&&e==-&&i==-&&d==-) return ;
int m=(ei*p+pi*e+pe*i)%(**)-d;
if(m<=) m+=**;
cout<<"Case "<<cnt++<<": the next triple peak occurs in "<<m<<" days."<<endl;
}
}
 
上一篇:Erlang数据类型的表示和实现(1)——数据类型回顾


下一篇:c++趣味之为变参模板的每个参数执行单独函数