zoukankan      html  css  js  c++  java
  • POJ 1006

    #include<iostream>
    using namespace std;
    int main(int argc, char* argv[])
    {
        int p,e,i,d;
        int index=0;
    
        while(cin>>p>>e>>i>>d)
        {
            if(p==-1)
                break;
            int n=(5544*p+14421*e+1288*i-d)%(21252);
            if(n<=0)
                n+=21252;
            cout<<"Case "<<++index<<": the next triple peak occurs in "<<n<<" days."<<endl;
        }
        return 0;
    }
    

    这一题开始读错了。以至于走了很大弯路。我的这个英语水啊~

    给出的p,e,i都是距离当前年份的第一天的第一个三个峰值同时出现的天数,之后每隔23 28 33天依次出现各自的峰值。题目给定从第d天起,问多少天后三个峰值再次同时出现。

    那么这个问题就很简单了。设n天后triple peak,那么n-p,n-e,n-i三个分别是23 28 33的倍数。求出n后,最后输出的结果是n-d。

    这是一种思路,当然可以在具体编码求解的时候进行局部的优化。
    但问题是,这个题目远没有这么简单。其中包含的数学思想可以值得我们学学。这个思想就是剩余定理!

  • 相关阅读:
    RedMine 1.3.3 安装攻略
    .net 4.0 framework 安装时发生严重错误
    MYSQL安装配置
    接口隔离ISP
    依赖倒置DIP
    VS2010添加WP模板
    VS2012尝鲜
    OCP开放闭合
    单一职责
    里氏替换
  • 原文地址:https://www.cnblogs.com/ShaneZhang/p/2129065.html
Copyright © 2011-2022 走看看