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. 【linux系列】centos7配置桥接模式静态IP

    一.设置桥接模式 VMware->Edit->Virtual Network Edit 二.查看物理机的ip地址 三.根据物理机的ip地址,设置linux虚拟机的ip地址 四.网络重启 五 ...

  2. win8/win7中使用Git Extensions PuTTy模式提交时 git-credential-winstore.exe": No such file or directory 错误解决方案

    参考:http://www.cnblogs.com/hlizard/p/3627792.html 报错类似以下错误 \"F:/GitExtensions/GitCredentialWinSt ...

  3. [原]RHEL7/Centos 7将网卡名称改为eth0

    ======问题===== rhel的网卡为enoxxxxxxxxx =====原因====== 从CentOS/RHEL7起,可预见的命名规则变成了默认.这一规则,接口名称被自动基于固件,拓扑结构和 ...

  4. MAC ox下配置mysql

    下载MySQL安装包:http://dev.mysql.com/downloads/mysql/ 如图,选择dmg包,下载完成,双击后打开对应的pkg包,一直点击下一步,直到安装成功 启动和停止MyS ...

  5. CentOS 安装Sqlite3

    wget http://www.sqlite.org/sqlite-autoconf-3070500.tar.gz tar xvzf sqlite-autoconf-3070500.tar.gz cd ...

  6. resize 按钮不会被伪元素遮盖

    textarea默认有个resize样式,效果就是下面这样 读 <css 揭秘>时发现两个亮点: 其实这个属性不仅适用于 textarea 元素,适用于下面所有元素: elements w ...

  7. Deplearning.AI-吴恩达【中文课后作业】

    [吴恩达课后作业目录] 课程 周数 名称 类型 语言 地址 课程1 - 神经网络和深度学习 第1周 深度学习简介 测验 中英 传送门 无编程作业 编程作业 —— —— 第2周 神经网络基础 测验 中英 ...

  8. ubuntu安装Anaconda2-4.4.0+TensorFlow

    1.下载Anaconda 到官网http://continuum.io/downloads下载anaconda. 2.安装anaconda 在终端输入:cd ~/Downloads;        b ...

  9. NEFU 84 - 五指山 - [exgcd求解一元线性同余方程]

    题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=84 Time Limit:1000ms Memory Limit ...

  10. HDU - 5969 最大的位或 想法题

    http://acm.hdu.edu.cn/showproblem.php?pid=5969 (合肥)区域赛签到题...orz 题意:给你l,r,求x|y的max,x,y满足l<=x<=y ...