OpenJudge NOI 2.1 1978:生理周期

【题目链接】

OpenJudge NOI 2.1 1978:生理周期

【题目考点】

1. 枚举

【解题思路】

解法1:枚举日期

把从当年第1天开始数,第几天的天数叫做“日期”。
以体力高峰为例,p是从当年第1天开始体力高峰出现的日期,体力周期是23天,那么体力高峰日期为 p + 23 ∗ k p+23*k p+23k(k是自然数),反过来,一个日期x如果是体力高峰,那么一定有x-p能够整除23,即(x-p)%23 == 0
同理:
e是感情高峰第一次出现的日期,感情周期是28天,感情高峰日期为 e + 28 k e+28k e+28k(k是自然数)。一个日期x如果是感情高峰,一定有(x-e)%28 == 0
i是智力高峰第一次出现的日期,智力周期是33天,智力高峰日期为 i + 33 k i+33k i+33k(k是自然数)。一个日期x如果是智力高峰,一定有(x-i)%33 == 0

  • 枚举对象:日期x,即从当年第1天开始算起的天数
  • 枚举范围:给定时间为d,题目说不包括给定时间,那么从日期d+1开始,枚举到结果可能的最大值d+21252。
  • 判断条件:同时满足(x-p)%23 == 0(x-e)%28 == 0(x-i)%33 == 0

题目要求输出的是距离给定时间的天数,如果满足条件,则输出x-d,结束程序。

【题解代码】

解法1:枚举日期
#include <bits/stdc++.h>
using namespace std;
int main()
{
	int p, e, i, d;
	cin >> p >> e >> i >> d;
	for(int x = d+1; x <= d+21252; ++x)
	{
		if((x-p)%23 == 0 && (x-e)%28 == 0 && (x-i)%33 == 0)
		{
			cout << x-d;
			return 0;
		}
	}
	return 0;
} 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值