POJ 1006 Biorhythms

原创 2012年03月25日 22:32:02

题目:在人的生命中有三种周期:体能、情绪、智商,每种周期的周期长度分别为23,28,33,每种周期都有一天是峰顶,在相应周期的峰顶,人会在相应方面表现得最好。由于三个周期长度不同,所以三个周期的峰顶一般不在同一天。给定一个日期,我们的任务是要找出一天,这一天在三个周期中都是峰顶,称为triple peak,得到这一天到距离给定日期的天数。

输入:每一行输入一种情况,每行四个数,分别代表体能、情绪、智商三个周期的峰顶(不一定是第一个峰顶),第4个数代表给定日期。输入以 -1 -1 -1 -1结束。

输出:对每种情况,输出triple peak距离给定日期的天数,如果triple peak和给定日期是同一天,则输出下一个triple peak距离给定日期的天数。

解题思路:

1 对三个周期,分别找出一个数,这个数是另外两个周期长度的倍数,但对本周期长度取模为1。三个周期和对应的数如下:

    23   ---    5544

    28   ---  14421

    33   ---    1288

2 对每次输入,用p,e,i,d表示三种周期的峰顶和给定日期,则

   triple peak=p*5544+e*14421+i*1288

3 由于23、28、33的公倍数为21252,则triple peak对21252取模仍为一个triple peak,所以

   triple peak=(p*5544+e*14421+i*1288)%21252.

4 题目要求的是triple peak距离给定日期的天数,所以triple peak必须大于d,如果triple peak小于等于d,则加一个周期公倍数21252


代码:


#include<stdio.h>

int main()
{
	int p,e,i,d,peak,count=1;
	scanf("%d%d%d%d",&p,&e,&i,&d);
	while(p!=-1 && e!=-1 && i!=-1 && d!=-1)
	{
		p %= 23;
	        e %= 28;
		i %= 33;
		if(p==e && p==i && e==i)
		{
			peak = p;
		}
		else
		{
			peak = (p*5544 + e*14421 + i*1288)%21252;
		}
    	        if(peak <= d) peak += 21252;
		peak = peak -d;
		printf("Case %d: the next triple peak occurs in %d days.\n",count++,peak);
		scanf("%d%d%d%d",&p,&e,&i,&d);
	}
	return 0;
}




相关文章推荐

【中国剩余定理】POJ Biorhythms 1006

Biorhythms Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 122174 Accepted: 385...
  • ydd97
  • ydd97
  • 2015年09月16日 01:20
  • 335

POJ 1006 Biorhythms(中国剩余定理 模板)

POJ 1006 Biorhythms(中国剩余定理 模板)

POJ 1006-Biorhythms(CRT)

题意:人自出生起就有体力,情感和智力三个生理周期,分别为23,28和33天。一个周期内有一天为峰值,在这一天,人在对应的方面(体力,情感或智力)表现最好。通常这三个周期的峰值不会是同一天。现在给出三个...

POJ 1006-Biorhythms-生理周期峰值(中国剩余问题)

问题及代码: /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:HDU.cpp *作 者:单昕昕 ...
  • MIKASA3
  • MIKASA3
  • 2015年01月27日 21:58
  • 560

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

Some people believe that there are three cycles in a person’s life that start the day he or she is b...

POJ-1006 Biorhythms

题目大意:三个周期,长度为23,28,33.给定整数p,e,i表示三个周期高峰出现的时间,整数d表示一个给定的时间,求给定时间后至三个均达到高峰的时间之间的天数。 题目链接:http://poj.or...

poj1006 Biorhythms(中国剩余定理)

http://poj.org/problem?id=1006 题意:给你三个属性顶峰的开始日期,今天的日期,以及三个周期大小,求下一次三个顶峰均出现时的最早时间。 思路:首先ym下这位...

poj 1006 Biorhythms 中国剩余定理

这道题真是花费n多时间啊,关键我就是想知道事情的来龙去脉. "中国剩余定理"的经典例子: 《孙子算经》中有“物不知数”问题:“今有物不知其数,三三数之余二 ,五五数之余三 ,七七数之余二,问物几何...

POJ 1006 Biorhythms(中国剩余定理)

中国剩余定理 欧几里得 扩展欧几里得 数论 poj106 Description Some people believe that there are three cycles in a person...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 1006 Biorhythms
举报原因:
原因补充:

(最多只允许输入30个字)