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(中国剩余定理)的更多相关文章

  1. POJ 1006 - Biorhythms (中国剩余定理)

    B - Biorhythms Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Subm ...

  2. POJ 1006 Biorhythms --中国剩余定理(互质的)

    Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 103539   Accepted: 32012 Des ...

  3. POJ 1006 Biorhythms(中国剩余定理)

    题目地址:POJ 1006 学习了下中国剩余定理.參考的该博客.博客戳这里. 中国剩余定理的求解方法: 假如说x%c1=m1,x%c2=m2,x%c3=m3.那么能够设三个数R1,R2,R3.R1为c ...

  4. PKU POJ 1006 Biorhythms (中国剩余定理)

    中国剩余定理 x = ai (mod mi)  ai和mi是一组数,mi两两互质,求x 令Mi = m1*m2*~mk     其中,mi不包含在内. 因为mi两两互质,所以存在x和y, st   M ...

  5. poj1006 / hdu1370 Biorhythms (中国剩余定理)

    Biorhythms 题意:读入p,e,i,d 4个整数,已知(n+d)%23=p;   (n+d)%28=e;   (n+d)%33=i ,求n .        (题在文末) 知识点:中国剩余定理 ...

  6. POJ1006——Biorhythms(中国剩余定理)

    Biorhythms Description人生来就有三个生理周期,分别为体力.感情和智力周期,它们的周期长度为23天.28天和33天.每一个周期中有一天是高峰.在高峰这天,人会在相应的方面表现出色. ...

  7. poj 1006:Biorhythms(水题,经典题,中国剩余定理)

    Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 110991   Accepted: 34541 Des ...

  8. Biorhythms(中国剩余定理)

    Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 127339   Accepted: 40342 Des ...

  9. Biorhythms(poj1006+中国剩余定理)

    Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 117973   Accepted: 37026 Des ...

随机推荐

  1. 【PHP】使用GD库实现 图像生成、缩放、logo水印和简单验证码

    gd库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片.验证码.水印.缩略图等等.要使用gd库首先需要开启gd库扩展, windows系统下需要在php.ini中将ex ...

  2. javaweb基础 01--JSP取得绝对路径应用

    1.相关函数说明 * request.getScheme() 等到的是协议名称,默认是http * request.getServerName() 得到的是在服务器的配置文件中配置的服务器名称 比如: ...

  3. ACE学习简单记录

    一.ACE_Reactor的使用方法 1.创建ACE_Event_Handler的派生类. class MyHandler : public ACE_Event_Handler { public: M ...

  4. iOS教程:Core Data数据持久性存储基础教程

    目录[-] 创建Core Data工程 创建数据模型 测试我们的数据模型 来看看SQL语句的真面目 自动生成的模型文件 创建一个表视图 之后看些什么? 就像我一直说的,Core Data是iOS编程, ...

  5. HTML 5 Audio/Video DOM canplaythrough 事件在移动端遇到的坑

    canplaythrough 事件定义和用法 当浏览器预计能够在不停下来进行缓冲的情况下持续播放指定的音频/视频时,会发生 canplaythrough 事件. 当音频/视频处于加载过程中时,会依次发 ...

  6. Shell脚本导入外部脚本内容

    vim subscript.sh #!/bin/bash tool="ApacheSpark" vim main.sh #!/bin/bash source /home/wx/su ...

  7. 利用Python读取外部数据文件

      不论是数据分析,数据可视化,还是数据挖掘,一切的一切全都是以数据作为最基础的元素.利用Python进行数据分析,同样最重要的一步就是如何将数据导入到Python中,然后才可以实现后面的数据分析.数 ...

  8. BC32206 错误

    出现这种情况的话 排除代码引入dll版本的原因 看下是不是 你之前用net reflector 生成了pdb文件 导致项目引入的版本都是他生成的文件 处理方案就是 用everything 找到这个dl ...

  9. 世界时区和Java时区详解

    0.引言 Druid中时区的问题一直困扰着我们,所以我专门去研究了一下世界时区和Java中的时区,对使用Druid很用帮助. 1.UTC时间&GMT时间 UTC时间是时间标准时间(Univer ...

  10. ELK之写入MySQL数据库

    安装MySQL5.6 创建数据库并且授权 create database elk character set utf8 collate utf8_bin; grant all on elk.* to ...