在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. 菜鸟学习Spring——60s配置XML方法实现简单AOP

    一.概述. 上一篇博客讲述了用注解的形式实现AOP现在讲述另外一种AOP实现的方式利用XML来实现AOP. 二.代码演示. 准备工作参照上一篇博客<菜鸟学习Spring--60s使用annota ...

  2. df du

    df命令详细用法 a:显示全部的档案系统和各分割区的磁盘使用情形 i:显示i -nodes的使用量 k:大小用k来表示 (默认值) t:显示某一个档案系统的所有分割区磁盘使用量 x:显示不是某一个档案 ...

  3. shell 编程基础

    1 创建shell脚本文件 要创建一个shell脚本文件,必须在第一行指定要使用的shell,其格式为: #! /bin/bash 接着加上该shell文件的注释,说明该脚本文件用来干什么,有谁创建, ...

  4. [转]VC的DDK编译环境构建

    [转]VC的DDK编译环境构建 http://blog.csdn.net/skdev/article/details/1336935   1 环境状况 Windows XP SP1 NTDDK(win ...

  5. iOS 进阶 第十五天(0417)

    0417 创建UICollectionViewCell的Xib方法如下图 枚举定义导航跳转方式 js跳转到网页指定锚点 如下图所示:

  6. A taste of urllib3

    import urllib3 import certifi http = urllib3.PoolManager( cert_reqs='CERT_REQUIRED', # Force certifi ...

  7. [磁盘管理与分区]——关于分区、磁盘分区表、MBR

    磁盘连接与设备文件名的关系 1. 如下图所示:

  8. 设置搜狗输入法在任何时候按左右两侧的shift激活

    如上图,搜狗输入法for linux最近与广大用户见面了,现在的版本是1.0.0.0014,本人系统是ubuntu 14.04非麒麟版本 使用过程中有个习惯就是在任何窗口内只要按任意一侧的shift就 ...

  9. [转载]poi导出excel,可以自定义保存路径

    poi导出excel比js导出excel安全性更好,在使用poi导出excel时,先要导入poi-3.5-FINAL-20090928.jar包到你项目的lib目录下,我这里选择是3.5版的 1.ac ...

  10. 微软Hololens学院教程-Hologram 220-空间声音(Spatial sound )【本文是老版本,与最新的微软教程有出入】

    这是老版本的教程,为了不耽误大家的时间,请直接看原文,本文仅供参考哦! 原文链接https://developer.microsoft.com/EN-US/WINDOWS/HOLOGRAPHIC/ho ...