POJ 1006 Biorhythms(中国剩余定理)

原创 2016年05月31日 01:15:58

题目链接:
POJ 1006 Biorhythms

中国剩余定理

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <climits>
#include <cmath>
#include <ctime>
#include <cassert>
#define IOS ios_base::sync_with_stdio(0); cin.tie(0);
using namespace std;
typedef long long ll;
const int M = 3;

int cases = 0, a0, m0, dd;
int a[3], m[3] = {23, 28, 33};


int ex_gcd(int aa, int bb, int& x, int& y)
{
    if(bb == 0){
        x = 1, y = 0;
        return aa;
    }
    int d = ex_gcd(bb, aa % bb, y, x);
    y -= aa / bb * x;
    return d;
}

void work(int& m0, int& a0, int mm, int aa)
{
    int x, y, d;
    d = ex_gcd(m0, mm, x, y);
    mm /= d;
    x = x * (aa - a0) / d % mm;
    a0 += x * m0;
    m0 *= mm;
    a0 = (a0 % m0 + m0) % m0;
}

void solve()
{
    m0 = 1, a0 = 0;
    for(int i = 0; i < M; i++){
        work(m0, a0, m[i], a[i]);
    }
}

int main()
{
    while(~scanf("%d%d%d%d", &a[0], &a[1], &a[2], &dd) &&(a[0] != -1)){
        for(int i = 0; i < M; i++){
            a[i] %= m[i];
        }
        solve();
        a0 = ((a0 - dd) % m0 + m0) % m0;
        if(a0 == 0) a0 = m0;
        printf("Case %d: the next triple peak occurs in %d days.\n", ++cases, a0);
    }
    return 0;
}
版权声明:缥缈玉京人,想语然、京兆眉妩。

相关文章推荐

POJ 1006 Biorhythms(中国剩余定理 模板)

POJ 1006 Biorhythms(中国剩余定理 模板)

【中国剩余定理】POJ Biorhythms 1006

Biorhythms Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 122174 Accepted: 385...
  • ydd97
  • ydd97
  • 2015年09月16日 01:20
  • 337

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

Some people believe that there are three cycles in a person’s life that start the day he or she is b...

poj1006 Biorhythms(中国剩余定理)

http://poj.org/problem?id=1006 题意:给你三个属性顶峰的开始日期,今天的日期,以及三个周期大小,求下一次三个顶峰均出现时的最早时间。 思路:首先ym下这位...

poj 1006 Biorhythms 中国剩余定理

这道题真是花费n多时间啊,关键我就是想知道事情的来龙去脉. "中国剩余定理"的经典例子: 《孙子算经》中有“物不知数”问题:“今有物不知其数,三三数之余二 ,五五数之余三 ,七七数之余二,问物几何...

POJ 1006 Biorhythms(中国剩余定理)

中国剩余定理 欧几里得 扩展欧几里得 数论 poj106 Description Some people believe that there are three cycles in a person...

POJ 1006 Biorhythms(中国剩余定理 )

题目链接:click here~~ 【题目大意】:  人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方...

POJ1006 Biorhythms(生理周期,中国剩余定理详述)

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

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

数论:拓展欧几里得 + 同余模方程模板一份。 题解嘛,有空再补。。。(其实就是模板题。) #include #include using namespace std; type...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 1006 Biorhythms(中国剩余定理)
举报原因:
原因补充:

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