精华内容
下载资源
问答
  • 2018-07-21 22:26:13

    上机代码:

    #include<iostream>
    #include<cstdio>
    using namespace std;
    #define N 21252
    int main(){
        int p,e,i,d,caseNo = 0;
        while(cin>>p>>e>>i>>d && p!=-1){
            ++caseNo;
            int k;
            for(k = d+1;(k-p)%23;++k); //先找k的最小公倍数
            for(;(k-e)%28;k+=23);
            for(;(k-i)%33;k+=23*28);
            cout<<"Case"<<caseNo<<
                ":the next triple peak occurs in "<<k-d<<"  days"<<endl;
        }
    }

    更多相关内容
  • 2997:生理周期 算法

    2020-07-08 23:42:58
    样例输入 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 //-1 为输入结束 ...Case 1: the next triple peak occurs in 21252 days. Case 2: the next triple peak occurs in ...

    样例输入

    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  //-1 为输入结束

    样例输出

    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.

    解题: 思路枚举

    从d+1天开始,一直试到第21252天,对其中每个日期k看是否满足,(k-p)%23==0&&(k-e)%28==0&&(k-i)%33==0,显然很麻烦哦,所以我们先找到体力的哪天,然后根据最小公倍数查找智力和感情

    // ConsoleApplication2.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    int main()
    {
    	int p, e, i, d, caseNo = 0;
    	while (cin >> p >> e >> i >> d &&p != -1) {
    		++caseNo;
    		int k;
    		for (k = d + 1; (k - p) % 23; ++k);
    		for (; (k - e) % 28; k += 23);
    		for (; (k - i) % 33; k += 23 * 28);
    		cout << "Case" << caseNo << "the next triple peak occurs in " << k - d << " days." << endl;
    	}
        return 0;
    }
    
    

     

    展开全文
  • 21算法-生理周期

    2021-10-11 21:05:44
    人生来就有三个生理周期,分别为体力周期、感情周期和智力周期,它们的周期长度分别为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,在智力周期的高峰,人会思维敏捷,...

    人生来就有三个生理周期,分别为体力周期、感情周期和智力周期,它们的周期长度分别为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,在智力周期的高峰,人会思维敏捷,注意力容易高度集中。因为三个周期的长度不同,所以通常三个周期的高峰不会落在同一天。对于每个人,想知道何时三个高峰落在同一天。对于每个周期,会给出从当前年份的第一天开始,到出现高峰的天数(不一定是第一次高峰出现的时间)。给定一个从当年第一天开始的天数,你的任务是输出从给定时间开始(不包括给定时间),下一次三个高峰落在同一天的时间(距给定时间的天数)。例如:给定时间为10,下次出现三个高峰同一天的时间是12,则输出2(注意这里不是3)。
    input
    输入包含多组数据,每一组数据由四个整数组成,数据以-1 -1 -1 -1 结束。
    对于四个整数p, e, i和d,p, e, i分别表示体力、情感和智力高峰出现的时间(时间从当年的第一天开始计算)。d是给定的时间,可能小于p, e或i。所有给定时间是非负的并且小于或等于365,所求的时间小于或等于21252。
    output
    从给定时间起,下一次三个高峰同一天的时间(距离给定时间的天数)。
    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

    做本题时要注意枚举的目的就不会在循环里面在写循环了,只要满足条件即完成了一次循环的目的,如找到23 的倍数 23*28 的倍数

    做法

    #include<iostream>
    #include<stdio.h>
    using namespace std;
    int main(){
    	int time=0;int a,b,c,d;
    	while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF){
    		if(a==-1&&b==-1&&c==-1&&d==-1) break;
    		time++;
    		//确定循环遍历的初始值
    		int n1=d/23 ;
    		int n2=d/28;
    		int n3=d/33;
    		a=a%23+n1*23;b=b%28+n2*28;c=c%33+n3*33;
    		while(true){
    			if(a>21252){
    				cout<<"fail to find"<<endl;
    				break;
    			} 
    			if(a==b&&b==c&&a>d){
    				printf("Case:%d,the next triple peak occurs in %d days.\n",time,a);
    				break; 
    			}
    			a+=23;b+=28;c+=33;//尝试优化步长 
    		}
    	}
    } 
    

    正解

    #include<iostream>
    #include<stdio.h>
    using namespace std;
    int main(){
    	int t=0;int a,b,c,d;
    	while(true){
    		scanf("%d%d%d%d",&a,&b,&c,&d);
    		t++;
    		if(a==-1) break;int j=0;
    		for( j=d+1;j<21252;j++){
    			if((j-a)%23==0) break;//+23确保是23的倍数 进一步考虑28的倍数
    			}
    		for(;j<21252;j+=23){
    			if((j-b)%28==0) break;//满足条件的执行下一步 until 跳出循环  
    			}
    		for(;j<21252;j+=23*28){ 
    			if((j-c)%33==0) break; 
    		}
    		printf("Case:%d:the next triple peak occurs in %d days.\n",t,j-d);//最坏情况下输出21252 
    	}
    	
    }
    
    展开全文
  • 生理周期c++

    2022-03-29 20:47:06
    人生来就有三个生理周期,分别为体力、感情和智力周期,它 们的周期长度为23 天、 28 天和33 天。每一个周期中有一天是高峰。 在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰, 人会思维敏捷,精力...

    题目描述
    人生来就有三个生理周期,分别为体力、感情和智力周期,它
    们的周期长度为23 天、 28 天和33 天。每一个周期中有一天是高峰。
    在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,
    人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,
    所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。
    对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数(不一定是第一次高峰出现的时间)。
    你的任务是给定一个从当年第一天开始数的天数,输出从给定时间开始(不包括给定时间)
    下一次三个高峰落在同一天的时间(距给定时间的天数)。例如:给定时间为10,
    下次出现三个高峰同天的时间是12,则输出2(注意这里不是3)。
    输入
    输入四个整数:p, e, i 和d。 p, e, i 分别表示体力、情感和智力高峰出现的时间(
    时间从当年的第一天开始计算)。d 是给定的时间,可能小于p, e, 或 i。
     所有给定时间是非负的并且小于365, 所求的时间小于等于21252。
    输出
    从给定时间起,下一次三个高峰同天的时间(距离给定时间的天数)。
    样例输入
    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
    样例输出
    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.
     

    #include<iostream>
    #include<algorithm>
    using namespace std;
    int p, e, i, d,t;
    int main()
    {
        while (cin >> p >> e >> i >> d && p != -1)
        {
            t++;
            int k;//for循环的第二个为bool值判断,为0就不满足退出,等于0就满足继续进行for循环
            for (k = d + 1; (k - p) % 23; ++k);//先找体力高峰
            for (; (k - e) % 28; k += 23);//再找情感高峰和体力高峰都存在的点
            for (; (k - i) % 33; k += 23 * 28);//再找体力高峰和体力高峰以及智力高峰都存在的的k
                    {
                        cout << "Case " << t << ": the next triple peak occurs in " << k - d << " days" << endl;
                    }
        }
        return 0;
    }

    第三个循环要满足体力高峰和体力高峰都存在的的k,则需要找到23与28的最小公倍数

    最小公倍数的求法

    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n, m;//假设寻找n,m的最小的公倍数
    int main()
    {
        cin >> n >> m;
        for (int i = max(n, m);; i++)
        {
            if (i % m == 0 && i % n == 0) {
                cout << i;
                break;
            }
        }
        return 0;
    }

    展开全文
  • 生理周期

    2020-04-23 14:28:09
    人生来就有三个生理周期,分别为体力周期、感情周期和智力周期,它们的周期长度分别为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,在智力周期的高峰,人会思维敏捷,...
  • 例9 生理周期问题描述人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为 23 天、28 天和33 天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会...
  • 问题描述:人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力...
  • 1978:生理周期

    2021-01-29 18:31:30
    人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度...
  • 生理周期java实现import java.util.Scanner; //生理周期 public class S2 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int p,e,i,d; int ncase=0; while(sc.hasNext()...
  • 本软件在女性生理周期V 1.0 基础上创作,基于微软最新.net框架,软件安全稳定。(使用前请先安装微软framework2.0)2. 本软件在V1.0基础上增加了记录保存,管理功能,以便于你更好的记录掌握自己生理变化的时间3. ...
  • #define _CRT_SECURE_NO_WARNINGS ... openjudge:4148生理周期 解决思路:考虑第一个周期 继续是下一个周期 时间:2021年3月30日22时17分 */ int main() { int p, e, i, d,j; int count = 0; while
  • 生理周期 描述: 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23 天、 28 天和33 天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会...
  • C++生理周期(枚举)

    2019-02-10 20:51:52
    描述:人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23 天、 28 天和33 天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力...
  • 题目: 人有体力、情商、智商的高峰日子,它们分别每隔23天、28天和33天出现一次。对于每个人,我们想知道何时三个高峰落在同一天。给定三个高峰出现的日子p,e和i(不一定是第一次高峰出现的日子), 再给定另一个...
  • C++实现生理周期问题

    2019-03-26 00:17:02
    本文来自北大老师网络讲课的算法,可以学习一下这种思想 #include<bits/stdc++.h> using namespace std; #define N 21252 int main() { int p,e,i,d,caseNo=0; //p体力,e情感,i智力,d给定的日子 while...
  • 生理周期 人生来就有三个生理周期,分别为体力周期、感情周期和智力周期,它们的周期长度分别为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,在智力周期的高峰,人会...
  • 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。 每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。 例如,智力周期的高峰,人会思维敏捷,精力容易高度...
  • 程序设计与算法(二)算法基础-郭炜 1.2.1 生理周期 人有体力、情商、智商的高峰日子,它们分别每隔23天、28天和33天出现一次。对于每个人,我们想知道何时三个高峰落在同一天。给定三个高峰出现的日子p,e和i(不一定...
  • 生理周期(枚举基础题)

    千次阅读 2018-12-23 22:30:54
     人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天,28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度...
  • 生理周期问题是比较简单的算法问题,运用到了 枚举 的思想。 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为 23 天、 28 天和33 天。每一个周期中有一天是高峰。在高峰这天,人会在相应...
  • 枚举 - 生理周期

    2021-01-03 13:32:11
    枚举 - 生理周期 题目 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为 23 天、 28 天和33 天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例 如,智力周期的高峰,...
  • 本题呢,没什么太难的,就是用枚举法,用一般方法也可以做,但是比较麻烦,下面贴出两种方法的代码并解析思路供大家参考,实际运行时第一种效率比较低,花费时间比较长,第二种不追求的话还可以凑合 1、一般方法...
  • //生理周期 p e i public class class1 { public static void main(String[]args) { int p,e,i,d; Scanner s = new Scanner(System.in); System.out.println("请分别输入四个整数p,e,i,d(0*):"); p = s....
  • 算法-生理周期(枚举)

    千次阅读 2018-01-23 21:01:42
    人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天,28天和33天。每一个周 期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精 力容易...
  • 算法很美:生理周期

    2022-03-04 21:14:35
    人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度...
  • 2977:生理周期

    2020-08-25 23:16:26
    2977:生理周期 查看提交统计提示提问 总时间限制: 1000ms 内存限制: 65536kB 描述 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天...
  • 测试链接 总时间限制: 1000ms 内存限制: 65536kB 描述 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色...
  • 生理周期 人有体力、情商、智商的高峰日子,它们分别每隔 23天、28天和33天出现一次。对于每个人,我们想 知道何时三个高峰落在同一天。给定三个高峰出现 的日子p,e和i(不一定是第一次高峰出现的日子), 再给定另一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,756
精华内容 1,502
关键字:

生理周期算法