#include<iostream>
using namespace std; int main(){
int p,e,i,d,count=;
while(cin>>p>>e>>i>>d,p!=-&&e!=-&&i!=-&&d!=-){
count++;
int n=(*i+*e+*p-d+)%;
if(n==)
cout<<"Case "<<count<<": the next triple peak occurs in "<<""<<" days."<<endl;
else
cout<<"Case "<<count<<": the next triple peak occurs in "<<n<<" days."<<endl;
}
return ;
}

中国剩余定理的应用(运用的要求是n%m=r,其中m必须两两互质)

下面我们来看一个例子:

韩信点兵问题:已知n%3=2,n%5=3,n%7=2,求n.

设x=n%3,y=n%5,z=n%7且3,5,7互质。

使5×7×a(5,7为3之外的剩余两个数)被3除余1,有35×2=70,即a=2;  使3×7×b(3,7为5之外的剩余两个数)被5除余1,用21×1=21,即b=1;  使3×5×c(5,3为7之外的剩余两个数)被7除余1,用15×1=15,即c=1。

(其中的,为什么要余1,我们需上百度查阅中国剩余定理的证明)

那么n =(70×x+21×y+15×z)%lcm(3,5,7) = 23 这是n的最小解

而韩信已知士兵人数在2300~2400之间,所以只需要n+i×lcm(3,5,7)就得到了2333,此时i=22

同理我们便可解这个问题,

已知(n+d)%23=p;   (n+d)%28=e;   (n+d)%33=i

使33×28×a被23除余1,用33×28×8=5544;

使23×33×b被28除余1,用23×33×19=14421;

使23×28×c被33除余1,用23×28×2=1288。

因此有(5544×p+14421×e+1288×i)% lcm(23,28,33) =n+d

又23、28、33互质,即lcm(23,28,33)= 21252;

所以有n=(5544×p+14421×e+1288×i-d)%21252

本题所求的是最小整数解,避免n为负,因此最后结果为n= [n+21252]% 21252 那么最终求解n的表达式就是:

n=(5544*p+14421*e+1288*i-d+21252)%21252;

问题得解;

poj1006---中国剩余定理的更多相关文章

  1. poj1006中国剩余定理

    Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 103506   Accepted: 31995 Des ...

  2. POJ1006——中国剩余定理

    题目:http://poj.org/problem?id=1006 中国剩余定理:x= m/mj + bj + aj 讲解:http://www.cnblogs.com/MashiroSky/p/59 ...

  3. POJ1006 Biorhythms —— 中国剩余定理

    题目链接:https://vjudge.net/problem/POJ-1006 Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total ...

  4. 《孙子算经》之"物不知数"题:中国剩余定理

    1.<孙子算经>之"物不知数"题 今有物不知其数,三三数之剩二,五五数之剩七,七七数之剩二,问物几何? 2.中国剩余定理 定义: 设 a,b,m 都是整数.  如果 m ...

  5. POJ 1006 中国剩余定理

    #include <cstdio> int main() { // freopen("in.txt","r",stdin); ; while(sca ...

  6. [TCO 2012 Round 3A Level3] CowsMooing (数论,中国剩余定理,同余方程)

    题目:http://community.topcoder.com/stat?c=problem_statement&pm=12083 这道题还是挺耐想的(至少对我来说是这样).开始时我只会60 ...

  7. (伪)再扩展中国剩余定理(洛谷P4774 [NOI2018]屠龙勇士)(中国剩余定理,扩展欧几里德,multiset)

    前言 我们熟知的中国剩余定理,在使用条件上其实是很苛刻的,要求模线性方程组\(x\equiv c(\mod m)\)的模数两两互质. 于是就有了扩展中国剩余定理,其实现方法大概是通过扩展欧几里德把两个 ...

  8. 洛谷P2480 [SDOI2010]古代猪文(费马小定理,卢卡斯定理,中国剩余定理,线性筛)

    洛谷题目传送门 蒟蒻惊叹于一道小小的数论题竟能涉及这么多知识点!不过,掌握了这些知识点,拿下这道题也并非难事. 题意一行就能写下来: 给定\(N,G\),求\(G^{\sum \limits _{d| ...

  9. 洛谷P3868 [TJOI2009]猜数字(中国剩余定理,扩展欧几里德)

    洛谷题目传送门 90分WA第二个点的看过来! 简要介绍一下中国剩余定理 中国剩余定理,就是用来求解这样的问题: 假定以下出现数都是自然数,对于一个线性同余方程组(其中\(\forall i,j\in[ ...

  10. POJ2891 Strange Way to Express Integers 扩展欧几里德 中国剩余定理

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ2891 题意概括 给出k个同余方程组:x mod ai = ri.求x的最小正值.如果不存在这样的x, ...

随机推荐

  1. javascript小知识1 this的用法

    函数的应用: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  2. 利用分布类防止EF更新模型丢失验证信息

    数据库表TT,EF生成的model是这样的.在这里添加代码,从数据库更新模型是会冲掉. //------------------------------------------------------ ...

  3. vs2010:【“System.Data.OracleClient.OracleConnection”已过时】警告

    在oracle 安装目录下 找到 Oracle.DataAccess.dll添加引用,然后 using Oracle.DataAccess.Client;其他的都不用动,即可.连接字符串中 如有 用的 ...

  4. 用事件与CSS改变按钮不同状态下的颜色

    目标效果: 表单的群发按钮,在鼠标悬停时为深蓝色,鼠标离开时为淡蓝色. HTML代码: <button id="submitBtn"  class="btn&quo ...

  5. 位运算及在java中的应用整理

    计算机编码: 原码 符号位为0表示正数,为1表示负数: 其余各位等同于真值的绝对值. 如:0000 0000 0000 0010 =2,1000 0000 0000 0010 =-2 反码 符号位的用 ...

  6. MySql5.6Window超详细安装教程(msi 格式的安装)

    转自:红黑联盟  http://www.2cto.com/database/201506/409821.html 一.安装包准备 1.下载MySql5.6 http://www.mysql.com/ ...

  7. beego任务定时执行,延迟执行

    import ( "github.com/astaxie/beego" "github.com/astaxie/beego/toolbox") cronExpr ...

  8. 用C++编写程序,输出两个字符串的最大公共子字符串

      #include<iostream> #include<string> using namespace std; int main() { string s_l,s_sh; ...

  9. C#获得命令提示符输出

    原文:http://blog.csdn.net/abrahu/article/details/6611504 C#获得命令提示符输出 分类: c#应用程序2011-07-16 23:34 600人阅读 ...

  10. perl 递归地遍历目录下的文件

    #!/usr/bin/perl -w use strict; use File::Spec; local $\ ="\n";#当前模块的每行输出加入换行符 my %options; ...