zoukankan      html  css  js  c++  java
  • poj 1006 Biorhythms

    题目:

    http://poj.org/problem?id=1006

    题意:

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

    代码:

    /*
    中国剩余定理
    */
    #include<cstdio>
    using namespace std;
    int p,e,i,d,t,a[4],m[4],ans;
    void ty(int a,int b,int &x,int &y)
    {
        if(!b)
        {
            x=1;
            y=0;
            return ;
        }
        ty(b,a%b,x,y);
        int tmp=x;
        x=y;
        y=tmp-(a/b)*y;
    }
    int crt(int a[],int m[],int n)
    {
        int mm=1,tot=0,j,k;
        for(j=1;j<=n;j++)
          mm*=m[j];
        for(j=1;j<=n;j++)
        {
            int x,y,mi=mm/m[j];
            ty(mi,m[j],x,y);
            tot=(tot+mi*x*a[j])%mm;
        }
        if(tot<0)
          tot+=mm;
        return tot;
    }
    int main()
    {
        while(~scanf("%d%d%d%d",&p,&e,&i,&d))
        {
            if(p==-1&&e==-1&&i==-1&&d==-1)
              break;
            a[1]=p;
            a[2]=e;
            a[3]=i;
            m[1]=23;
            m[2]=28;
            m[3]=33;
            ans=crt(a,m,3);
            if(ans<=d)
              ans+=21252;
            t++;
            printf("Case %d: the next triple peak occurs in %d days.
    ",t,ans-d);        
        }
        return 0;
    }
  • 相关阅读:
    Excel Formulas-Vlookup
    C#字符串与unicode互相转换
    string.IsNullOrWhiteSpace
    CREATE SEQUENCE sqlserver
    error CS1056
    WebExceptionStatus
    运维踩坑记
    C# 快捷命令
    sqlserver2019安装教程
    sql server 数据库mdf文件和log文件过大问题
  • 原文地址:https://www.cnblogs.com/jyhywh/p/6360897.html
Copyright © 2011-2022 走看看