-
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天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,在智力周期的高峰,人会思维敏捷,... -
C语言程序设计100例之(9):生理周期
2021-05-25 02:16:39例9 生理周期问题描述人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为 23 天、28 天和33 天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会... -
算法——枚举(生理周期)
2021-05-30 10:22:08问题描述:人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力... -
1978:生理周期
2021-01-29 18:31:30人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度... -
枚举 生理周期java实现
2018-04-14 13:48:04生理周期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()... -
IWOMAN女性生理周期计算 V2.0(免费下载使用)
2009-06-17 21:45:26本软件在女性生理周期V 1.0 基础上创作,基于微软最新.net框架,软件安全稳定。(使用前请先安装微软framework2.0)2. 本软件在V1.0基础上增加了记录保存,管理功能,以便于你更好的记录掌握自己生理变化的时间3. ... -
120 - 算法 - 枚举 周期性跳转 openjudge:4148生理周期
2021-03-30 22:38:21#define _CRT_SECURE_NO_WARNINGS ... openjudge:4148生理周期 解决思路:考虑第一个周期 继续是下一个周期 时间:2021年3月30日22时17分 */ int main() { int p, e, i, d,j; int count = 0; while -
算法基础之枚举2:生理周期
2017-12-10 23:32:09生理周期 描述: 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23 天、 28 天和33 天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会... -
C++生理周期(枚举)
2019-02-10 20:51:52描述:人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23 天、 28 天和33 天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力... -
算法基础:生理周期--枚举
2021-02-15 15:52:48题目: 人有体力、情商、智商的高峰日子,它们分别每隔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... -
百练Openjudge 4184 生理周期
2019-09-07 17:15:08生理周期 人生来就有三个生理周期,分别为体力周期、感情周期和智力周期,它们的周期长度分别为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,在智力周期的高峰,人会... -
生理周期(枚举)--算法学习
2020-03-21 15:44:23人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。 每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。 例如,智力周期的高峰,人会思维敏捷,精力容易高度... -
程序设计与算法(二)算法基础-郭炜 1.2.1 生理周期
2021-01-26 21:49:06程序设计与算法(二)算法基础-郭炜 1.2.1 生理周期 人有体力、情商、智商的高峰日子,它们分别每隔23天、28天和33天出现一次。对于每个人,我们想知道何时三个高峰落在同一天。给定三个高峰出现的日子p,e和i(不一定... -
生理周期(枚举基础题)
2018-12-23 22:30:54人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天,28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度... -
生理周期 枚举算法问题
2017-02-01 19:26:00生理周期问题是比较简单的算法问题,运用到了 枚举 的思想。 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为 23 天、 28 天和33 天。每一个周期中有一天是高峰。在高峰这天,人会在相应... -
枚举 - 生理周期
2021-01-03 13:32:11枚举 - 生理周期 题目 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为 23 天、 28 天和33 天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例 如,智力周期的高峰,... -
北大郭炜程序设计算法二:生理周期
2019-07-17 15:21:20本题呢,没什么太难的,就是用枚举法,用一般方法也可以做,但是比较麻烦,下面贴出两种方法的代码并解析思路供大家参考,实际运行时第一种效率比较低,花费时间比较长,第二种不追求的话还可以凑合 1、一般方法... -
算法-生理周期(枚举-java)
2022-02-25 09:33:09//生理周期 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:262977:生理周期 查看提交统计提示提问 总时间限制: 1000ms 内存限制: 65536kB 描述 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天... -
基本算法之枚举:198.生理周期
2020-04-09 16:37:05测试链接 总时间限制: 1000ms 内存限制: 65536kB 描述 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色... -
生理周期--枚举(详细解说)
2021-01-13 17:44:21生理周期 人有体力、情商、智商的高峰日子,它们分别每隔 23天、28天和33天出现一次。对于每个人,我们想 知道何时三个高峰落在同一天。给定三个高峰出现 的日子p,e和i(不一定是第一次高峰出现的日子), 再给定另一...