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.pswp.cn/news/373377.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373377.shtml
英文地址,請注明出處:http://en.pswp.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…