HDU 1370 Biorhythms

Biorhythms

Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 669Accepted Submission(s): 266

Problem Description
Some people believe that there are three cycles in a person's life that start the day he or she is born. These three cycles are the physical, emotional, and intellectual cycles, and they have periods of lengths 23, 28, and 33 days, respectively. There is one peak in each period of a cycle. At the peak of a cycle, a person performs at his or her best in the corresponding field (physical, emotional or mental). For example, if it is the mental curve, thought processes will be sharper and concentration will be easier.

Since the three cycles have different periods, the peaks of the three cycles generally occur at different times. We would like to determine when a triple peak occurs (the peaks of all three cycles occur in the same day) for any person. For each cycle, you will be given the number of days from the beginning of the current year at which one of its peaks (not necessarily the first) occurs. You will also be given a date expressed as the number of days from the beginning of the current year. You task is to determine the number of days from the given date to the next triple peak. The given date is not counted. For example, if the given date is 10 and the next triple peak occurs on day 12, the answer is 2, not 3. If a triple peak occurs on the given date, you should give the number of days to the next occurrence of a triple peak.


This problem contains multiple test cases!

The first line of a multiple input is an integer N, then a blank line followed by N input blocks. Each input block is in the format indicated in the problem description. There is a blank line between input blocks.

The output format consists of N output blocks. There is a blank line between output blocks.

 

Input
You will be given a number of cases. The input for each case consists of one line of four integers p, e, i, and d. The values p, e, and i are the number of days from the beginning of the current year at which the physical, emotional, and intellectual cycles peak, respectively. The value d is the given date and may be smaller than any of p, e, or i. All values are non-negative and at most 365, and you may assume that a triple peak will occur within 21252 days of the given date. The end of input is indicated by a line in which p = e = i = d = -1.

 

Output
For each test case, print the case number followed by a message indicating the number of days to the next triple peak, in the form:

Case 1: the next triple peak occurs in 1234 days.

Use the plural form ``days'' even if the answer is 1.

 

Sample Input

 
1 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.

 

Source

 

Recommend
Eddy
今日做第一条非水题就系~~~中国剩女定理!
首先就系睇张教授既PDF,然后按照算法框架写出扩展欧几里德,模线性方程, 中国剩女定理函数,直接套然后减去d就ok,注意第一个Case由第一个输入既数决定。
下面直接贴代码: 得意
43191642011-08-03 10:23:16Accepted13700MS204K1248 BC++10SGetEternal{(。)(。)}!
#include <iostream> #include <vector> using namespace std; vector<int>A, N; int EX_GCD(int a, int b, int &x, int &y) { int d, tx, ty; if (b == 0) { x = 1; y = 0; return a; } d = EX_GCD(b, a % b, tx, ty); x = ty; y = tx - (a / b) * ty; return d; } int MLE(int a, int b, int n) { int d, x, y; d = EX_GCD(a, n, x, y); if (b % d == 0) { x = x * b / d % n; return x; } return 0; } int CRT() { int x = 0, n = 1, i, bi; for (i = 0; i < N.size(); i++) n *= N[i]; for (i = 0; i < A.size(); i++) { bi = MLE(n / N[i], 1, N[i]); x = (x + A[i] * bi * (n / N[i])) % n; } return x; } int Solve(int p, int e, int i, int d) { int ans, add = 23 * 28 * 33; A.clear(); A.push_back(p % 23); A.push_back(e % 28); A.push_back(i % 33); ans = CRT(); while (ans <= d) ans += add; return ans - d; } int main() { int C, p, e, i, d, ans; N.clear(); N.push_back(23); N.push_back(28); N.push_back(33); scanf("%d", &C); while (1) { scanf("%d%d%d%d", &p, &e, &i, &d); if (p == -1 && e == -1 && i == -1 && d == -1) break; ans = Solve(p, e, i, d); printf("Case %d: the next triple peak occurs in %d days.\n", C++, ans); } return 0; }
其实系尼条算系模版题………… 尴尬
基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。 智能教学辅助系统 这是一个智能教学辅助系统的前端项目,基于 Vue3+TypeScript 开发,使用 Ant Design Vue 作为 UI 组件库。 功能模块 用户模块 登录/注册功能,支持学生和教师角色 毛玻璃效果的登录界面 教师模块 备课与设计:根据课程大纲自动设计教学内容 考核内容生成:自动生成多样化考核题目及参考答案 学情数据分析:自动化检测学生答案,提供数据分析 学生模块 在线学习助手:结合教学内容解答问题 实时练习评测助手:生成随练题目并纠错 管理模块 用户管理:管理员/教师/学生等用户基本管理 课件资源管理:按学科列表管理教师备课资源 大屏概览:使用统计、效率指数、学习效果等 技术栈 Vue3 TypeScript Pinia 状态管理 Ant Design Vue 组件库 Axios 请求库 ByteMD 编辑器 ECharts 图表库 Monaco 编辑器 双主题支持(专业科技风/暗黑风) 开发指南 # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build 简介 本项目旨在开发一个基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值