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

B - Biorhythms
Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u
Submit Status Practice POJ 1006

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.

Hint

Translator

北京大学程序设计实习2007, Xie Di
题意如题。
题解:现设 num 是下一个相同日子距离开始的天数 p,e,i,d 如题中所设!那么就可以得到三个式子:
( num + d ) % 23 == p;
( num + d ) % 28 == e;
( num + d ) % 33 == i;
这是典型的中国剩余定理问题:传送门。
以上是互质的中国剩余定理,比较好理解,还有非互质的中国剩余定理,存在无解情况:传送门。
给出两种代码,第一种包含了运算过程,适用于其他数据,第二种是该题的成品。
代码一:
#include <iostream>
#include <cstdio>
using namespace std;
#define mod 21252
int exgcd(int a,int b,int &x,int &y) //计算扩展欧几里得
{if(b==0) {x=1;y=0;return a;}int d=exgcd(b,a%b,y,x); y-=a/b*x;return d;
}
int inv(int a,int n) //计算逆元
{int d,x,y;d=exgcd(a,n,x,y);if(d==1) return (x%n+n)%n;else return -1;
}
int datain[5]={23,28,33};
int dataout[5];
void cal() //计算中国剩余定理
{int ans=1;for(int i=0;i<3;i++)ans*=datain[i];for(int i=0;i<3;i++){ans/=datain[i];dataout[i]=inv(ans,datain[i])*ans; //记得结果算出来ans*=datain[i]; //记得乘回来
    }
}
int main()
{cal();//for(int i=0;i<3;i++)//  cout<<dataout[i]<<endl;int p,e,i,d,cas=1,ans;while(cin>>p>>e>>i>>d){if(p==-1&&e==-1&&i==-1&&d==-1)break;ans=(dataout[0]*p+dataout[1]*e+dataout[2]*i-d+mod)%mod;if(!ans) ans=mod;printf("Case %d: the next triple peak occurs in %d days.\n",cas++,ans);}return 0;
}

代码二:

#include <iostream>
#include <cstdio>
using namespace std;
#define mod 21252
int main()
{int p,e,i,d,cas=1,ans;while(cin>>p>>e>>i>>d){if(p==-1&&e==-1&&i==-1&&d==-1)break;ans=(5544*p+14421*e+1288*i-d+mod)%mod;if(!ans) ans=mod;printf("Case %d: the next triple peak occurs in %d days.\n",cas++,ans);}return 0;
}

转载于:https://www.cnblogs.com/Ritchie/p/5312341.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

子线程中更新UI线程的三个方法

1、通过handler方式&#xff0c;sendmessage。 多个类间传递比较麻烦&#xff0c;也懒的写... 2、线程中通过runOnUiThread&#xff08;&#xff09; new Thread() { public void run() { //这儿是耗时操作&#xff0c;完成之后更新UI&#xff1b; runOnUiThread(new Runnab…

mysql limit acs_mysql查询操作

简单查询&#xff1a;select * from 表名;避免重复&#xff1a;select distinct 字段 from 表名;条件查询&#xff1a;select 字段,字段 from 表名 where id<5(条件);四则运算查询&#xff1a;select id,dep_id,id*dep_id from company.employee5 where id<5;定义显示格式…

作业管理系统数据字典

转载于:https://www.cnblogs.com/heyangcan/p/5312394.html

使用Hive和iReport进行大数据分析

每个JJ Abrams的电视连续剧疑犯追踪从主要人物芬奇先生一个下列叙述情节开始&#xff1a;“ 你是被监视。 政府拥有一个秘密系统-每天每天每小时都会对您进行监视的机器。 我知道是因为...我建造了它。 “当然&#xff0c;我们的技术人员知道得更多。 庞大的电气和软件工程师团…

docker集群管理

docker集群管理 ps&#xff1a;docker machine docker swarm docker compose 在Docker Machine发布之前&#xff0c;你可能会遇到以下问题&#xff1a; 你需要登录主机&#xff0c;按照主机及操作系统特有的安装以及配置步骤安装Docker&#xff0c;使其能运行Docker…

从0学java_从零开始学JAVA(一.Java的基础语法)

基本语法编写 Java 程序时&#xff0c;应注意以下几点&#xff1a;大小写敏感&#xff1a;Java 是大小写敏感的&#xff0c;这就意味着标识符 Hello 与 hello 是不同的。类名&#xff1a;对于所有的类来说&#xff0c;类名的首字母应该大写。如果类名由若干单词组成&#xff0c…

linux mount (挂载命令)详解

挂接命令(mount) 首先&#xff0c;介绍一下挂接(mount)命令的使用方法&#xff0c;mount命令参数非常多&#xff0c;这里主要讲一下今天我们要用到的。 命令格式&#xff1a;mount [-t vfstype] [-o options] device dir 其中&#xff1a; 1.-t vfstype 指定文件系统的类型&…

Android官方培训课程中文版(v0.9.5)

http://hukai.me/android-training-course-in-chinese/index.html转载于:https://www.cnblogs.com/xiaoyao095/p/6125715.html

使用SaxParser和完整代码进行XML解析

SAX解析器使用回调函数&#xff08;org.xml.sax.helpers.DefaultHandler&#xff09;通知客户端XML文档结构。 您应该扩展DefaultHandler并重写一些方法来实现xml解析。 覆盖的方法是 startDocument&#xff08;&#xff09;和endDocument&#xff08;&#xff09;–在XML文档…

mysql添加字符串日期时间_mysql学习笔记--- 字符串函数、日期时间函数

一、常见字符串函数&#xff1a;1、CHAR_LENGTH 获取长度(字符为单位)2、FORMAT 格式化3、INSERT 替换的方式插入4、INSTR 获取位置5、LEFT/RIGHT 取左、取右6、LENGTH 获取长度(字节为单位)7、LTRIM/RTRIM/TRIM 去空格(左/右/自定义)8、STRCMP 字符串比较9、CONCAT 字…

Android异常和工具使用笔记

Android异常和工具使用笔记 1、r文件找不到去你的工程目录下&#xff0c;手动的把gen删掉&#xff0c;然后去project中刷新一下&#xff0c;在编译看看。以前遇到过类似的问题&#xff0c;实在不行就把你的eclispe,adt升级到最新的版本吧 抓住那么一点点线索&#xff0c;就要去…

ADO.NET 核心对象简介

ADO.NET ADO.NET是.NET中一组用于和数据源进行交互的面向对象类库&#xff0c;提供了数据访问的高层接口。 ADO.NET类库在System.Data命名空间内&#xff0c;根据我们访问的不同数据库选择命名空间&#xff0c;System.Data.SqlClient。 ADO.NET类最重要的优点是支持数据库以断开…

MongoDB与Spring Data项目

如今&#xff0c;我们所有人都在观察NoSql解决方案的爆炸式增长。 我已经习惯了RDBMS&#xff0c;但这些并不是您可能遇到的所有挑战的解决方案。 根据最近的经验&#xff0c;我有机会使用MongoDB –文档数据库。 在本文中&#xff0c;我打算介绍将MongoDB与Spring Data项目一起…

java转换为字符串_java – 如何从int转换为字符串?

正常方式是Integer.toString(i)或String.valueOf(i)。串联将工作&#xff0c;但它是非常规的&#xff0c;可能是一个难闻的气味&#xff0c;因为它暗示作者不知道上述两种方法(他们不知道什么&#xff1f;)。Java在使用字符串(见the documentation)时对操作符提供了特殊的支持&…

简学LINGO(三)——实例篇

1. 装配线平衡模型 一个装配线含有一系列的工作站。在终于产品的加工过程中每一个工作站运行一种或者是几种特定的任务。装配线周期是指全部工作站完毕分配给他们各自任务所花费时间的最大值。平衡装配线的目标是为每一个工作站分配加工任务。尽可能使每一个工作站运行同样数量…

Hibernate缓存级别教程

开始使用Hibernate的人们常见的问题之一就是性能&#xff0c;如果您没有太多的Hibernate经验&#xff0c;您会发现应用程序变慢的速度。 如果启用sql跟踪&#xff0c;您将看到有多少查询被发送到数据库&#xff0c;而这些查询几乎不需要Hibernate知识就可以避免。 在当前文章中…

java方法执行的时间_计算Java中任意一个方法的执行时间的工具类

1 packagealgorithm.study.utils;23 importjava.lang.reflect.Method;45 /**6 * This class is getting a method execute time and provide some other functions.7 *8 *authorygh 2017年2月24日9 */10 public classMethodExecuteTimeUtils {1112 /**13 * Get a method execut…

如何在 IIS 中设置 HTTPS 服务

Windows Server2008、IIS7启用CA认证及证书制作完整过程 这篇文章介绍了如何安装证书申请工具&#xff1b; 如何在iis创建证书申请&#xff1b; 如何使用iis申请证书生成的txt文件&#xff0c;在工具中开始申请证书&#xff1b; 如何导出证书&#xff1b; 以及在网站中开始使用…

Android之卫星菜单的实现

卫星菜单是现在一个非常受欢迎的“控件”&#xff0c;很多Android程序员都趋之若鹜&#xff0c;预览如下图。传统的卫星菜单是用Animation实现的&#xff0c;需要大量的代码&#xff0c;而且算法极多&#xff0c;一不小心就要通宵Debug。本帖贴出用属性动画Animator来实现卫星菜…

Java中的WADL:温和的介绍

WADL&#xff08; Web应用程序描述语言 &#xff09;对REST而言&#xff0c;WSDL对SOAP而言。 这种语言的仅仅存在引起了很多争议&#xff08;请参阅&#xff1a; 我们需要WADL吗&#xff1f; 或者 需要 WADL还是不需要WADL &#xff09;。 我可以想到使用WADL的一些合法用例&a…