Biorhythms(中国剩余定理)
http://shuxueshi.jie.blog.163.com/blog/static/13611628820104179856631/
这篇博客写的很棒!
#include<stdio.h>
#include<string.h>
#include<stdlib.h> int main()
{
int a,b,c,t;
int i,j;
int k = ;
while(scanf("%d%d%d%d",&a,&b,&c,&t)!=EOF)
{
k++;
if(a==- && b==- && c==- && t==-)
{
break;
}
int a1 = a%;//只有每次对23取余等于a1时才能达到高峰。
int b1 = b%;
int c1 = c%;
int a2 = ,b2 = ,c2 = ;
for(i=;i<=;i++)
{
if(((i*(*))% == ) && a2 == )
{
a2 = i*(*);
}
if(((i*(*))% == ) && b2 == )
{
b2 = i*(*);
}
if(((i*(*))% == ) && c2 == )
{
c2 = i**;
}
if(a2!= && b2!= && c2!=)
{
break;
}
}
int a3 = a2 * a1;
int b3 = b2 * b1;
int c3 = c2 * c1;
int aa = a3 + b3 + c3;
int bb = **;
int cc = aa%bb;
if(cc-t<=)//防止出现0 0 0 X的情况
{
printf("Case %d: the next triple peak occurs in %d days.\n",k,cc-t+);
}
else
{
printf("Case %d: the next triple peak occurs in %d days.\n",k,cc-t);
}
}
return ;
}
POJ1006——Biorhythms(中国剩余定理)
Biorhythms
Description
人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一
天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的
高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数(不一定是第一
次高峰出现的时间)。你的任务是给定一个从当年第一天开始数的天数,输出从给定时间开始(不包括给定时间)下一次三个高峰落在同一天的时间(距给定时间的
天数)。例如:给定时间为10,下次出现三个高峰同天的时间是12,则输出2(注意这里不是3)。
Input
输入四个整数:p, e, i和d。 p, e, i分别表示体力、情感和智力高峰出现的时间(时间从当年的第一天开始计算)。d 是给定的时间,可能小于p, e, 或 i。 所有给定时间是非负的并且小于365, 所求的时间小于21252。
当p = e = i = d = -1时,输入数据结束。
Output
从给定时间起,下一次三个高峰同天的时间(距离给定时间的天数)。
采用以下格式:
Case 1: the next triple peak occurs in 1234 days.
注意:即使结果是1天,也使用复数形式“days”。
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.
题目大意:
中文。(POJ右上角Language可选)
解题思路:
有题可知:设天数为T,则T%23==p;T%28==e;T%33==i 输出答案为T-d(为其中的最小正整数解)
典型的中国剩余定理,根据(T%23==p;T%28==e;T%33==i )可以求出一个T-d和周期lcm(23,28,33)
最小正整数解为(T-d)%lcm(23,28,33);
PS:注意当T-d<=0时,(T-d)%lcm(23,28,33)<=0,故答案是(T-d)%lcm(23,28,33)+lcm(23,28,33)
Code1:

1 #include<stdio.h>
2 #include<iostream>
3 using namespace std;
4 int gcd(int a,int b)
5 {
6 return b==0?a:gcd(b,a%b);
7 }
8 int lcm(int a,int b)
9 {
10 return a/gcd(a,b)*b;
11 }
12 int main()
13 {
14 int p,e,i,d;
15 int times=0;
16 while (cin>>p>>e>>i>>d)
17 {
18 times++;
19 if (p==-1) break;
20 int x1=lcm(23,28);
21 int x2=lcm(23,33);
22 int x3=lcm(28,33);
23 int k1=0,k2=0,k3=0;
24 while ((k1*x1)%33!=1)
25 k1++;
26 while ((k2*x2)%28!=1)
27 k2++;
28 while ((k3*x3)%23!=1)
29 k3++;
30 int sum=k1*x1*i+k2*x2*e+k3*x3*p;
31 sum=sum%(lcm(lcm(28,23),33));
32 sum-=d;
33 if (sum<=0) sum+=lcm(lcm(28,23),33);
34 printf("Case %d: the next triple peak occurs in %d days.\n",times,sum);
35 }
36 return 0;
37 }

由于题目中已知条件有点多。 可以对代码进行优化。
Code2:

1 #include<stdio.h>
2 int main()
3 {
4 int p,e,i,d,times=0;
5 while (scanf("%d %d %d %d",&p,&e,&i,&d))
6 {
7 times++;
8 if (p==-1) break;
9 int sum=(1288*i+14421*e+5544*p)%21252-d;
10 if (sum<=0) sum+=21252;
11 printf("Case %d: the next triple peak occurs in %d days.\n",times,sum);
12 }
13 return 0;
14 }

Biorhythms(中国剩余定理)的更多相关文章
- POJ 1006 - Biorhythms (中国剩余定理)
B - Biorhythms Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Subm ...
- POJ 1006 Biorhythms --中国剩余定理(互质的)
Biorhythms Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 103539 Accepted: 32012 Des ...
- POJ 1006 Biorhythms(中国剩余定理)
题目地址:POJ 1006 学习了下中国剩余定理.參考的该博客.博客戳这里. 中国剩余定理的求解方法: 假如说x%c1=m1,x%c2=m2,x%c3=m3.那么能够设三个数R1,R2,R3.R1为c ...
- PKU POJ 1006 Biorhythms (中国剩余定理)
中国剩余定理 x = ai (mod mi) ai和mi是一组数,mi两两互质,求x 令Mi = m1*m2*~mk 其中,mi不包含在内. 因为mi两两互质,所以存在x和y, st M ...
- poj1006 / hdu1370 Biorhythms (中国剩余定理)
Biorhythms 题意:读入p,e,i,d 4个整数,已知(n+d)%23=p; (n+d)%28=e; (n+d)%33=i ,求n . (题在文末) 知识点:中国剩余定理 ...
- POJ1006——Biorhythms(中国剩余定理)
Biorhythms Description人生来就有三个生理周期,分别为体力.感情和智力周期,它们的周期长度为23天.28天和33天.每一个周期中有一天是高峰.在高峰这天,人会在相应的方面表现出色. ...
- poj 1006:Biorhythms(水题,经典题,中国剩余定理)
Biorhythms Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 110991 Accepted: 34541 Des ...
- Biorhythms(中国剩余定理)
Biorhythms Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 127339 Accepted: 40342 Des ...
- Biorhythms(poj1006+中国剩余定理)
Biorhythms Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 117973 Accepted: 37026 Des ...
随机推荐
- 修改计算机名或IP后Oracle10g无法启动服务的解决办法
修改计算机名或IP后Oracle10g无法启动服务的解决办法 遇到的问题,问题产生原因不详.症状为,windows服务中有一项oracle服务启动不了,报出如下错误. Windows 不能在 本地计算 ...
- Windows server 创建FTP 包括ftp的账号密码设置
原始文章 : https://blog.csdn.net/missingshirely/article/details/50767043 最近要做个FTP上传资源的工具,以前都是我提供目录,由公司网管 ...
- LESS CSS 框架简介与使用
简介 CSS(层叠样式表)是一门历史悠久的标记性语言,同 HTML 一道,被广泛应用于万维网(World Wide Web)中.HTML 主要负责文档结构的定义,CSS 负责文档表现形式或样式的定义. ...
- Python中四种运行其他程序的方式
原文地址:http://blog.csdn.net/jerry_1126/article/details/46584179 在Python中,可以方便地使用os模块来运行其他脚本或者程序,这样就可以在 ...
- gerrit_bash_commands.sh
https://github.com/tomwys/gerrit-bash-commands gerrit_bash_commands.sh # Author: Tomasz Wysocki < ...
- ZOJ1363 Chocolate
Chocolate Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge In 2100, ACM chocolat ...
- Installed .NET Framework 4.5 Ajax POST IIS hang
去年我已写过一篇关于安装.NET Framework 4.5后特定场景Ajax POST的挂起问题 => http://www.cnblogs.com/junchu25/archive/2012 ...
- 大规模Elasticsearch集群管理心得
转载:http://elasticsearch.cn/article/110 ElasticSearch目前在互联网公司主要用于两种应用场景,其一是用于构建业务的搜索功能模块且多是垂直领域的搜索,数据 ...
- Unity3D笔记 英保通七 物理引擎
给球体添加刚体RigidBody和球体碰撞器Sphere Collider 效果: OnTriggerEnter() 代码 using UnityEngine; using System.Collec ...
- 美团开源 SQL 优化工具 SQLAdvisor
https://www.oschina.net/news/82725/sqladvisor-opensource https://github.com/Meituan-Dianping/SQLAdvi ...