中国剩余定理 hdoj 1370 Biorhythms

原创 2012年03月24日 11:52:27

中国剩余定理,即孙子定理,对于三个数问题的形式为:已知M1,M2,M3是两两互素的正整数,求最小ans,使它被M1,M2, M3所除得到的余数分别是C1,C2, C3。

孙子定理的算法思想是:找出被Mi除余1而被另外两个数整除的数Wi。所求数之一为:ans = sum(Wi*Ci)(i = 1,2,3).若要求满足条件的最小解,mod(lcm(M1,M2 ,M3 ))即可。

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

const int N = 4;

int M[N]={23, 28, 33}, C[N], W[N], day;

int mod(int a, int b, int c) {
    int tmp,t;
    tmp = a*b;
    t = tmp;
    while (tmp%c != 1)
        tmp += t;
    return tmp;
}

int main()
{
    int i, ca, cnt;
    scanf("%d", &ca);
    for (i = 1; i <= ca; ++i) {
        cnt = 0;
        while (scanf("%d %d %d %d", &C[0], &C[1], &C[2], &day)) {
            if (C[0] == -1 && C[1] == -1 && C[2] == -1 && day == -1)
                break;
            W[0] = mod(M[1], M[2], M[0]);
            W[1] = mod(M[0], M[2], M[1]);
            W[2] = mod(M[0], M[1], M[2]);
            int ans = 0, j;
            for (j = 0; j < 3; ++j)
                ans += W[j]*C[j];
            ans = (ans-day+21252)%21252;
            if (ans == 0)
                ans = 21252;
            printf("Case %d: the next triple peak occurs in %d days.\n", ++cnt, ans);
        }
        if (i < ca)
            printf("\n");
    }
    return 0;
}


中国剩余定理 Python实现

#gcd,求最大公约数函数,递归算法,有了扩展欧几里得算法之后,此函数可以不用 def _g_c_d(a,b): if 0==b: return a return gcd(b,a%b)...
  • qjstc0
  • qjstc0
  • 2014年03月27日 18:11
  • 2070

中国剩余定理即孙子定理的五种解法

加深一下理解,找了点纯数学的资料(老者善学,尤老骥伏枥,况乎我也): “中国剩余定理”是公元5-6世纪、我国南北朝时期的一部著名算术著作《孙子算经》中的一个“物不知数”的解法问题:今有物不知其数,三三...
  • bobodem
  • bobodem
  • 2015年10月26日 17:08
  • 1491

中国剩余定理与扩展 Lucas定理与扩展 学习笔记

中国剩余定理问题求同余方程组 ⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪x≡c1(modm1)x≡c2(modm2)x≡c3(modm3)...x≡ck(modmk) \left\{ \begin{array...
  • Clove_unique
  • Clove_unique
  • 2017年01月16日 09:29
  • 2270

HDU 1370 Biorhythms (中国剩余定理)

Biorhythms Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tot...
  • liangzhaoyang1
  • liangzhaoyang1
  • 2016年10月17日 23:53
  • 281

hdu 1370 Biorhythms 中国剩余定理的应用 and 枚举方法

Biorhythms Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total...
  • hnust_xiehonghao
  • hnust_xiehonghao
  • 2012年08月23日 16:00
  • 1134

HDU1370 Biorhythms【中国剩余定理】

问题链接:HDU1370 Biorhythms。 问题描述:参见上文。 问题分析:本题可以直接用中国剩余定理来解,同余方程如下: X≡p(mod 23) X≡e(mod 28) X≡i(...
  • tigerisland45
  • tigerisland45
  • 2017年05月12日 23:36
  • 720

POJ1006-Biorhythms【中国剩余定理】

  • 2011年07月31日 23:12
  • 7KB
  • 下载

hdu 1370(中国剩余定理)

点击打开链接 题意: 人有三个循环,循环周期分别为23,28,33,给你这三个周期出现的时间a,b,c,以及开始计算的天数d。求三个周期在同一天的时间。。。 a=(n-d)%23...
  • yyf573462811
  • yyf573462811
  • 2013年08月02日 16:34
  • 604

HDU 1370(中国剩余定理)

Description 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如, 智力周期...
  • u013220054
  • u013220054
  • 2014年01月17日 19:17
  • 841

HDU1370(中国剩余定理)

昨天我仔细一想,发现自己之前的分类(用OJ来划分,毫无意义啊!)太失败了,所以我重新划分了一下大分类,在分到数论的时候,我就想起了中国剩余定理了,于是乎今天就刷了一题中国剩余定理的题目了,话说太久没作...
  • u011044759
  • u011044759
  • 2014年06月09日 09:11
  • 839
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:中国剩余定理 hdoj 1370 Biorhythms
举报原因:
原因补充:

(最多只允许输入30个字)