zoukankan      html  css  js  c++  java
  • poj1006 Biorhythms

    Biorhythms

     POJ - 1006 

    题意:人自出生起就有体力,情感和智力三个生理周期,分别为23,28和33天。一个周期内有一天为峰值,在这一天,人在对应的方面(体力,情感或智力)表现最好。通常这三个周期的峰值不会是同一天。现在给出三个日期,分别对应于体力,情感,智力出现峰值的日期。然后再给出一个起始日期,要求从这一天开始,算出最少再过多少天后三个峰值同时出现。

    /*
        x=p(mod 23)
        x=e(mod 28)
        x=i(mod 33)
        题目就是要求上面同余方程的解,用中国剩余定理求解 
    */
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    int a[5],m[5];
    void Exgcd(int a,int b,int &x,int &y){
        if(b==0){x=1;y=0;return;}
        Exgcd(b,a%b,x,y);
        int tmp=x;
        x=y;
        y=tmp-(a/b)*y;
    }
    int CRT(int a[],int m[],int n){
        int M=1,ans=0;
        for(int i=1;i<=n;i++)M*=m[i];
        for(int i=1;i<=n;i++){
            int x,y,Mi=M/m[i];
            Exgcd(Mi,m[i],x,y);
            ans=(ans+Mi*x*a[i])%M;
        }
        if(ans<0)ans+=M;
        return ans;
    }
    int main(){
        freopen("Cola.txt","r",stdin);
        int p,e,i,d,Case=0;
        while(1){
            Case++;
            scanf("%d%d%d%d",&p,&e,&i,&d);
            if(p==-1&&e==-1&&i==-1&&d==-1)return 0;
            a[1]=p;a[2]=e;a[3]=i;
            m[1]=23;m[2]=28;m[3]=33;
            int ans=CRT(a,m,3);
            if(ans<=d)ans+=21252;
            printf("Case %d: the next triple peak occurs in %d days.
    ",Case,ans-d);
        }
    }
  • 相关阅读:
    Django内置Admin解析
    python项目 配置文件 的设置
    Django---信号
    bash配置文件
    week4 作业
    shell基础练习题
    shell基础
    shell变量与运算
    week3 作业
    文件权限管理
  • 原文地址:https://www.cnblogs.com/thmyl/p/7467227.html
Copyright © 2011-2022 走看看