在POJ上有译文(原文右上角),选择语言:简体中文

求解同余方程组:
x=ai(mod mi) i=1~r, m1,m2,...,mr互质
利用中国剩余定理
令M=m1*m2*...*mr,Mi=M/mi
因为mi两两互质,所以(Mi,mi)=1
令Mi*yi=1(mod mi)的解为yi,即Mi模mi的逆元
则方程的解为:
(a1*M1*y1+a2*M2*y2+...+ar*Mr*yr)%M

方法一:用扩展欧几里德求逆元

#include <iostream>
#include <stdio.h>
#include <string.h> using namespace std;
const int M=;
int a[],m[]={,,};
int sp,se,si,d;
int exgcd(int a,int b,int &x,int &y){
if(b==){
x=;
y=;
return a;
}
int d=exgcd(b,a%b,x,y);
int tmp=x;
x=y;
y=tmp-a/b*y;
return d;
}
int main()
{
int cases=,ans;
int ni[],Mi[],x,y;
//因为mi是固定的,所以可以先将对应的逆元用扩展欧几里德求出来
for(int i=;i<;i++){
Mi[i]=M/m[i];
exgcd(Mi[i],m[i],x,y);
ni[i]=x;
}
while(scanf("%d%d%d%d",&sp,&se,&si,&d)!=EOF){
if(sp==-)
break;
a[]=sp;a[]=se;a[]=si;
ans=;
for(int i=;i<;i++){
ans=(ans+(a[i]*Mi[i]%M)*ni[i]%M)%M;
ans=(ans+M)%M;
}
if(ans<=d){
ans=ans+M-d;
}
else
ans=ans-d;
printf("Case %d: the next triple peak occurs in %d days.\n",++cases,ans); }
return ;
}

方法二:枚举求Mi*yi

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm> using namespace std; const int M=;
int m[]= {,,};
int a[];
int sp,se,si,d;
int Mii[],Mi[];
int value; //求最大公约数,最小公倍数则两数相乘除以它们的最大公约数
int gcd(int a,int b) {
if(b==)
return a;
else
return gcd(b,a%b);
}
int main() {
int cases=;
Mii[]=Mi[]=m[]*m[];
Mii[]=Mi[]=m[]*m[];
Mii[]=Mi[]=m[]*m[];
//枚举求Mi*yi
for(; Mii[]%m[]!=; Mii[]+=Mi[]) {
}
for(; Mii[]%m[]!=; Mii[]+=Mi[]) {
}
for(; Mii[]%m[]!=; Mii[]+=Mi[]) {
}
while(scanf("%d%d%d%d",&sp,&se,&si,&d)!=EOF) {
if(sp==-)
break;
a[]=sp;
a[]=se;
a[]=si;
value=((Mii[]*a[]+Mii[]*a[]+Mii[]*a[])%M+M)%M;
int ans;
if(value<=d) {
ans=value+M-d;
} else
ans=value-d;
printf("Case %d: the next triple peak occurs in %d days.\n",++cases,ans); }
return ;
}

POJ 1006 Biorhythms (中国剩余定理)的更多相关文章

  1. POJ 1006 - Biorhythms (中国剩余定理)

    B - Biorhythms Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Subm ...

  2. POJ 1006 Biorhythms(中国剩余定理)

    题目地址:POJ 1006 学习了下中国剩余定理.參考的该博客.博客戳这里. 中国剩余定理的求解方法: 假如说x%c1=m1,x%c2=m2,x%c3=m3.那么能够设三个数R1,R2,R3.R1为c ...

  3. POJ 1006 Biorhythms --中国剩余定理(互质的)

    Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 103539   Accepted: 32012 Des ...

  4. PKU POJ 1006 Biorhythms (中国剩余定理)

    中国剩余定理 x = ai (mod mi)  ai和mi是一组数,mi两两互质,求x 令Mi = m1*m2*~mk     其中,mi不包含在内. 因为mi两两互质,所以存在x和y, st   M ...

  5. POJ.1006 Biorhythms (拓展欧几里得+中国剩余定理)

    POJ.1006 Biorhythms (拓展欧几里得+中国剩余定理) 题意分析 不妨设日期为x,根据题意可以列出日期上的方程: 化简可得: 根据中国剩余定理求解即可. 代码总览 #include & ...

  6. Biorhythms(中国剩余定理)

    http://shuxueshi.jie.blog.163.com/blog/static/13611628820104179856631/ 这篇博客写的很棒! #include<stdio.h ...

  7. poj 1006 Biorhythms (中国剩余定理模板)

    http://poj.org/problem?id=1006 题目大意: 人生来就有三个生理周期,分别为体力.感情和智力周期,它们的周期长度为23天.28天和33天.每一个周期中有一天是高峰.在高峰这 ...

  8. poj 1006:Biorhythms(水题,经典题,中国剩余定理)

    Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 110991   Accepted: 34541 Des ...

  9. 中国剩余定理 POJ 1006 Biorhythms

    题目传送门 题意:POJ有中文题面 分析:其实就是求一次同余方程组:(n+d)=p(%23), (n+d)=e(%28), (n+d)=i(%33),套用中国剩余定理模板 代码: /********* ...

随机推荐

  1. Moses manual 中Basline System 2.3.4节用IRSTLM创建语言模型的命令有误

    手册里写到: ~/irstlm/bin/compile-lm \ --text yes \ news-commentary-v8.fr-en.lm.en.gz \ news-commentary-v8 ...

  2. View和监听器

    View的基本概念 View就是Activity当中显示出来的控件,用对象来表示,如文本框的TextView类,按钮的Button类等等 每一种控件都对应一个类,都属于View的子类 在Activit ...

  3. Linux分区

    硬盘分区主要分为基本分区和扩展分区两种,基本分区和扩展分区的数目之和不能大于四个.且基本分区可以马上被使用但不能再分区.扩展分区必须再进行分区后才能进行使用,也就是说它必须进行二次分区.扩展分区再分下 ...

  4. hdu 5327 Olympiad

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5327 Olympiad Description You are one of the competit ...

  5. Object C学习初步

    最近乘着项目不太紧张的时候,赶紧给自己冲了一下电.其实我自己最熟悉的平台应该是.net,所以当初上手windows phone的话是很快,我记得当初是一边跟着项目进展,一边自己开始学习前台的XAML语 ...

  6. WIndows7 多版本

    Windows7 安装U盘 删除source\ei.cfg 以后开机安装会提示安装的版本

  7. UIButton之Block回调

    本文主要介绍了两种改写UIButton的点击事件方法——继承UIButton跟给UIButton添加一个分类.附代码 方法一:继承UIButton UIButtonBlock.h文件 如下 #impo ...

  8. Entity Framework 插入数据出现重复插入(导航属性硬是要查再一遍???????)

    问题: Artist artmodel = new Artist(); artmodel.user = uinfo; _artiests.Add(artmodel); 新增一条Artist记录,但是同 ...

  9. JSP的编译指令

    JSP有3个编译指令,是通知JSP引擎的消息,它不直接生成输出.编译指令都有默认值,无须为每个指令设置值. 常见的编译指令有如下三个: page:针对当前页面的指令. include:指定包含另一个页 ...

  10. M1事后分析报告(Postmortem Report)

    M1事后分析报告(Postmortem Report) 设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们项目组所开发的软件为一个基于Andro ...