zoukankan      html  css  js  c++  java
  • poj1006

    题目大意:生物节律
    一些人相信有三种循环在一个人生命中从他或者她出生的那天起,这个三个周期是,身体,情绪,智力, 并且他们有23,28,和33天的时间,在每一个周期里面都有一个周期,在一个周期的高峰期,一个人可以在这个领域做的最好,例如,如果这是一条曲线,思维过程讲更容易清晰和集中,来自这三个不同的周期,这三个峰值在不同的时期,我们想确定每个人三个峰值同时发生的时间,对于每个周期,你要给出这年中的一个峰值(没有必要是第一个)的时间,你也需要给出一个天数这年是从那天开始的,你的任务就是在当前确定的日期找到下一个三重峰值日期,给定的日期不算,例如给定的日期是10,并且下一个三重峰值日期是2,不是3,如果三重峰值发生在给定的日期,你应该计算下一个三重峰值日期出现的时间
    比较简单的模拟题,数值也不大,直接使用下标法模拟
    ///////////需要注意有可能开始日期在峰值前面
    #include<iostream>
    #include<string.h>
    using namespace std;

    #define maxn 31253

    int day[maxn];

    void MakeOne(int Start, int Tmp)
    {
        for(int i=Start; i<maxn; i+=Tmp)
            day[i]++;
        for(int i=Start-Tmp; i>=0; i-=Tmp)
            day[i]++;
    }
    int  Find(int Start, int End)
    {
        for(int i=Start+1; i<End; i++)
            if(day[i] == 3)return i;
        return End;
    }

    int  main()
    {
        int x, y, z, start, k=1;

        while(cin>>x>>y>>z>>start, x!=-1)
        {
            memset(day, 0sizeof(day));

            MakeOne(x, 23);
            MakeOne(y, 28);
            MakeOne(z, 33);

            int ans = Find(start, start+21252);

            cout<<"Case "<< k <<": the next triple peak occurs in "<< ans-start <<" days."<<endl;
            k++;
        }

        return 0;

    } 

  • 相关阅读:
    MySql常用命令
    多线程
    redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决
    使用 CGImageRef 出现的crash
    leetcode238. 除自身以外数组的乘积
    通过位运算实现求和
    leetcode求1+2+……+n
    leetcode101. 对称二叉树
    leetcode198. 打家劫舍
    leetcode394. 字符串解码
  • 原文地址:https://www.cnblogs.com/liuxin13/p/4383899.html
Copyright © 2011-2022 走看看