中国剩余定理 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;
}


相关文章推荐

HDU 1370 Biorhythms (中国剩余定理)

Biorhythms Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tot...

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

Biorhythms Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total...

HDU1370 Biorhythms【中国剩余定理】

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

hdu 1370(中国剩余定理)

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

HDU 1370(中国剩余定理)

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

HDU1370(中国剩余定理)

昨天我仔细一想,发现自己之前的分类(用OJ来划分,毫无意义啊!)太失败了,所以我重新划分了一下大分类,在分到数论的时候,我就想起了中国剩余定理了,于是乎今天就刷了一题中国剩余定理的题目了,话说太久没作...

20140714 「初等数论 - 中国剩余定理」 POJ 1006 Biorhythms

数论:拓展欧几里得 + 同余模方程模板一份。 题解嘛,有空再补。。。(其实就是模板题。) #include #include using namespace std; type...

POJ 1006---Biorhythms【中国剩余定理】

Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 78980   Ac...

ACM题 Biorhythms 将中国剩余定理的思想包含在程序中

这个是我结合别人的代码与解题的思想而写出的代码,代码中的所有数据都变的有理有据。 可以先看大家对这道题的解法,对于不懂的数据来源再看我的代码 下面是题目要求: 题目描述 Some people ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:中国剩余定理 hdoj 1370 Biorhythms
举报原因:
原因补充:

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