zoukankan      html  css  js  c++  java
  • POJ 1006 中国剩余定理

    生理周期
    Time Limit: 1000MS   Memory Limit: 10000K
    Total Submissions: 141670   Accepted: 45527

    Description

    人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数(不一定是第一次高峰出现的时间)。你的任务是给定一个从当年第一天开始数的天数,输出从给定时间开始(不包括给定时间)下一次三个高峰落在同一天的时间(距给定时间的天数)。例如:给定时间为10,下次出现三个高峰同天的时间是12,则输出2(注意这里不是3)。

    Input

    输入四个整数:p, e, i和d。 p, e, i分别表示体力、情感和智力高峰出现的时间(时间从当年的第一天开始计算)。d 是给定的时间,可能小于p, e, 或 i。 所有给定时间是非负的并且小于365, 所求的时间小于21252。 

    当p = e = i = d = -1时,输入数据结束。

    Output

    从给定时间起,下一次三个高峰同天的时间(距离给定时间的天数)。 

    采用以下格式: 
    Case 1: the next triple peak occurs in 1234 days. 

    注意:即使结果是1天,也使用复数形式“days”。

    Sample Input

    0 0 0 0
    0 0 0 100
    5 20 34 325
    4 5 6 7
    283 102 23 320
    203 301 203 40
    -1 -1 -1 -1

    Sample Output

    Case 1: the next triple peak occurs in 21252 days.
    Case 2: the next triple peak occurs in 21152 days.
    Case 3: the next triple peak occurs in 19575 days.
    Case 4: the next triple peak occurs in 16994 days.
    Case 5: the next triple peak occurs in 8910 days.
    Case 6: the next triple peak occurs in 10789 days.

    Source

     
    题意:人自出生起就有体力,情感和智力三个生理周期,分别为23,28和33天。现在给出体力,情感,智力出现峰值的日期p,i,e。然后再给出d,求从d开始,最少再过多少天后三个峰值同时出现。
    思路:那天为n => (1)n%23=p,n%28=i,n%33=e, (2)求n-d.
    代码:
     1 //#include "bits/stdc++.h"
     2 #include "cstdio"
     3 #include "map"
     4 #include "set"
     5 #include "cmath"
     6 #include "queue"
     7 #include "vector"
     8 #include "string"
     9 #include "cstring"
    10 #include "time.h"
    11 #include "iostream"
    12 #include "stdlib.h"
    13 #include "algorithm"
    14 #define db double
    15 #define ll long long
    16 //#define vec vector<ll>
    17 #define Mt  vector<vec>
    18 #define ci(x) scanf("%d",&x)
    19 #define cd(x) scanf("%lf",&x)
    20 #define cl(x) scanf("%lld",&x)
    21 #define pi(x) printf("%d
    ",x)
    22 #define pd(x) printf("%f
    ",x)
    23 #define pl(x) printf("%lld
    ",x)
    24 #define inf 0x3f3f3f3f
    25 #define rep(i, x, y) for(int i=x;i<=y;i++)
    26 const int N   = 1e6 + 5;
    27 const int mod = 1e9 + 7;
    28 const int MOD = mod - 1;
    29 const db  eps = 1e-10;
    30 const db  PI  = acos(-1.0);
    31 using namespace std;
    32 ll a,b,c,d;
    33 ll m[10],f[10];
    34 ll exgcd(ll a, ll b, ll &x, ll &y)
    35 {
    36     ll d;
    37     //if (a == 0 && b == 0) return -1;
    38     if (b == 0)
    39     {
    40         x = 1;
    41         y = 0;
    42         return a;
    43     }
    44     d = exgcd(b, a%b, y, x);
    45     y -= a / b * x;
    46     return d;
    47 }
    48 
    49 ll inv(ll a, ll MOD)
    50 {
    51     ll x, y, d;
    52     d = exgcd(a, MOD, x, y);
    53     if (d == 1)
    54         return (x % MOD + MOD) % MOD;
    55     // else   return -1;
    56 }
    57 ll china(int n, ll *f, ll *m){
    58     ll M = 1, ret = 0;
    59     for(int i = 0; i < n; i ++) M *= m[i];
    60     for(int i = 0; i < n; i ++){
    61         ll w = M / m[i];
    62         ret = (ret + w * inv(w, m[i]) * f[i]) % M;
    63     }
    64     return (ret + M) % M;
    65 }
    66 
    67 
    68 int main()
    69 {
    70     m[0]=23,m[1]=28,m[2]=33;
    71     ll MM=23*28*33;
    72     int cnt=0;
    73     while(scanf("%lld%lld%lld%lld",&a,&b,&c,&d)==4)
    74     {
    75         cnt++;
    76         if(a==-1&&b==-1&&c==-1&&d==-1) break;
    77         f[0]=a%m[0],f[1]=b%m[1],f[2]=c%m[2];
    78         ll ans=china(3,f,m);
    79         ans-=d;
    80         if(ans<=0) ans+=MM;
    81         printf("Case %d: the next triple peak occurs in %lld days.
    ",cnt,ans);
    82     }
    83     return 0;
    84 }
     
  • 相关阅读:
    翻译连载 |《你不知道的JS》姊妹篇 |《JavaScript 轻量级函数式编程》 第 6 章:值的不可变性
    翻译 | 带你秒懂内存管理 第一部(共三部)
    基于 Electron 的爬虫框架 Nightmare
    微信小程序教学第三章(含视频):小程序中级实战教程:列表静态页面制作
    翻译 | 使用AFrame打造WebVR版《我的世界》
    微信小程序教学第三章第三节(含视频):小程序中级实战教程:视图与数据关联
    翻译 | 玩转 React 表单 —— 受控组件详解
    翻译连载 |《你不知道的JS》姊妹篇 |《JavaScript 轻量级函数式编程》 第 5 章:减少副作用
    翻译连载 |《你不知道的JS》姊妹篇 |《JavaScript 轻量级函数式编程》 第 2 章:函数基础
    一张图告诉你移动Web前端所有技术(工程化、预编译、自动化)
  • 原文地址:https://www.cnblogs.com/mj-liylho/p/8406093.html
Copyright © 2011-2022 走看看