Biorhythms HDU - 1370 (中国剩余定理)

题目链接:https://cn.vjudge.net/problem/HDU-1370

题目大意:给你三个式子,让你求出满足题目条件的解。

(n-d)%23=p,(n-d)%28=e,(n-d)%33=i。给你d,p,e,i,让你求出n的值,其实把(n-d)看成一个整体,求出来之后再减去d就能求出n了。

中国剩余定理模板也存一下。

m数组是被除数,下标从0开始 m[0]=23,m[1]=28,m[2]=33.

b数组是等号右边的数,下标从0开始,b[0]=p,b[1]=e,b[2]=i。

然后求出的答案是(n-d)的值。

AC代码:

 1 #include<iostream>
 2 #include<stack>
 3 #include<cstring>
 4 #include<iomanip>
 5 #include<stdio.h>
 6 #include<algorithm>
 7 #include<cmath>
 8 #include<queue>
 9 using namespace std;
10 # define ll long long
11 # define inf 1ll<<60
12 const int mod = 21252;
13 const int maxn = 1e3+100;
14 int exgcd(int a,int b,int &x,int &y){
15 int d=a;
16 if(b!=0){
17 d=exgcd(b,a%b,y,x);
18 y-=(a/b)*x;
19 }
20 else {
21 x=1;
22 y=0;
23 }
24 return d;
25 }
26 int china(int m0[],int b[]){
27 int x,y,n,m=1,a=0;
28 for(int j=0;j<3;j++){
29 m=m*m0[j];
30 }
31 for(int j=0;j<3;j++){
32 n=m/m0[j];
33 exgcd(n,m0[j],x,y);
34 a=a+n*b[j]*x;
35 }
36 return a%m;
37 }
38 int main(){
39 int T;
40 int b[15];
41 int p,e,i,d;
42 int Case=0;
43 scanf("%d",&T);
44 while(~scanf("%d%d%d%d",&p,&e,&i,&d)){
45 if(p==-1&&e==-1&&i==-1&&d==-1)break;
46 int m[3]={23,28,33};
47 b[0]=p,b[1]=e,b[2]=i;
48 int sum=china(m,b)-d;
49 if(sum<=0)sum+=mod;
50 printf("Case %d: the next triple peak occurs in %d days.\n",++Case,sum);
51 }
52 return 0;
53 }

原文地址:https://www.cnblogs.com/letlifestop/p/10427856.html

时间: 2024-10-14 02:05:35

Biorhythms HDU - 1370 (中国剩余定理)的相关文章

HDU 1370(中国剩余定理)

原文章地址:http://m.blog.csdn.net/article/details?id=18414733 Description 人生来就有三个生理周期,分别为体力.感情和智力周期,它们的周期长度为23天.28天和33天.每一个周期中有一天是高峰.在高峰这天,人会在相应的方面表现出色.例如, 智力周期的高峰,人会思维敏捷,精力容易高度集中.因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天.对于每个人,我们想知道何时三个高峰落在同一天. 对于每个周期,我们会给出从当前年份的第一

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

Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 111285   Accepted: 34638 Description Some people believe that there are three cycles in a person's life that start the day he or she is born. These three cycles are the physical,

HDU 5446 中国剩余定理+lucas

Unknown Treasure Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 2389    Accepted Submission(s): 885 Problem Description On the way to the next secret treasure hiding place, the mathematician

BestCoder Round #80 1004 hdu 5668 中国剩余定理(m不互质版)

链接:戳这里 Circle Time Limit: 2000/1000 MS (Java/Others)   Memory Limit: 65536/65536 K (Java/Others) 问题描述 \ \ \ \     Fye对约瑟夫游戏十分着迷. \ \ \ \     她找到了n个同学,把他们围成一个圈,让他们做约瑟夫游戏,然后她得到了一个同学们出圈的编号序列.游戏是这样进行的:以同学1为起点,开始计数,计数到第k个同学,该同学出圈.出圈的同学将不参与之后的计数. \ \ \ \  

【poj 1006】Biorhythms(数论--中国剩余定理 模版题){附【转】中国剩余定理 }

题意: 有 解法:中国剩余定理.定义为有 k 对关系:P % ai = bi,其中 ai 两两之间互质.(而两两之间不互质就是把原来的关系式化为:P = bi (mod ai) →  ai * x + bi = P,用拓展欧几里德求解同余方程组了.)    而 ai 两两互质时,可知道 a2*a3*...*ak = 1 (mod a1)  和  a1*a3*...*ak = 1 (mod a2) 等关系.那么想使 P % ai = bi ,就是要式子两边同乘 bi 了. 下面是转载的了~ 原博:

Biorhythms(poj1006+中国剩余定理)

生理周期 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 117861   Accepted: 36978 Description 人生来就有三个生理周期,分别为体力.感情和智力周期,它们的周期长度为23天.28天和33天.每一个周期中有一天是高峰.在高峰这天,人会在相应的方面表现出色.例如,智力周期的高峰,人会思维敏捷,精力容易高度集中.因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天.对于每个人,我们想知道

hdu 1573(中国剩余定理)

X问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4869    Accepted Submission(s): 1617 Problem Description 求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], …, X mod

hdu 1930 中国剩余定理(互质模板题)

And Now, a Remainder from Our Sponsor Time Limit : 5000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 23   Accepted Submission(s) : 13 Problem Description IBM has decided that all messages sent to and from teams

【中国剩余定理】POJ 1006 &amp; HDU 1370 Biorhythms

题目链接: http://poj.org/problem?id=1006 http://acm.hdu.edu.cn/showproblem.php?pid=1370 题目大意: (X+d)%23=a1,(X+d)%28=a2,(X+d)%33=a3,给定a1,a2,a3,d,求最小的X. 题目思路: [中国剩余定理] 23,28,33互素,可以套中国剩余定理. 也可以直接手算逆元. 33×28×a模23的逆元为8,则33×28×8=5544: 23×33×b模28的逆元为19,则23×33×1