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;
}
版权声明:缥缈玉京人,想语然、京兆眉妩。

北大ACM1006——Biorhythms~~中国剩余定理

中国剩余定理,百度一下,就有它的定义与证明。 这里我就讲一个例子就好了。 题目的意思就是给你p,e,i,d。(n + d)% 23 = p,(n + d) % 28 = e,(n + d) % 33 ...
  • qq_25425023
  • qq_25425023
  • 2015年06月14日 09:39
  • 781

poj1006 Biorhythms 边界,坑题

Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 125633   A...
  • EventQueue
  • EventQueue
  • 2016年03月17日 21:14
  • 1773

acm-Biorhythms(poj1006)同余

Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 112921   A...
  • absurd1350
  • absurd1350
  • 2014年08月07日 16:09
  • 368

poj 1006 与 中国剩余定理

poj 1006 题的思路不是很难的,可以转化数学式: 现设 num 是下一个相同日子距离开始的天数          p,e,i,d 如题中所设! 那么就可以得到三个式子:( num + d ...
  • shanshanpt
  • shanshanpt
  • 2013年03月27日 09:46
  • 8457

POJ 1006:Biorhythms 中国剩余定理

Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 121194   Accepted: 381...
  • u010885899
  • u010885899
  • 2015年08月03日 12:52
  • 401

POJ 1006 Biorhythms(中国剩余定理)

题目: 代码:
  • npufz
  • npufz
  • 2014年08月25日 18:56
  • 248

Biorhythms(poj 1006)(中国剩余定理)

题目翻译: Description 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。...
  • u013207805
  • u013207805
  • 2014年03月11日 17:12
  • 473

|poj 1006|中国剩余定理|Biorhythms

poj传送门 裸的中国剩余定理,注意一下负数的情况即可#include #include #include #define ms(i,j) memset(i,j, siz...
  • Darost
  • Darost
  • 2017年02月03日 23:17
  • 392

POJ 1006 Biorhythms(中国剩余定理)

E - Biorhythms Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Subm...
  • yeguxin
  • yeguxin
  • 2014年08月07日 19:51
  • 356

POJ 1006 Biorhythms 【中国剩余定理】

Description Some people believe that there are three cycles in a person's life that start the day h...
  • u013180220
  • u013180220
  • 2014年08月06日 10:04
  • 445
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 1006 Biorhythms(中国剩余定理)
举报原因:
原因补充:

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