标签:剩余定理+大衍求一术
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 115292 | Accepted: 36148 |
Description
Input
Output
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.
解题思路:
题目大意就是身体、情感、智力的周期分别为23、28和33。给你三者峰值出现的时间,问下一次三个高峰同时出现的所需天数。
强大的数学····Orz····给出剩余定理的例子:
n%3=2,n%5=3,n%7=2且3,5,7互质
使5×7被3除余1,用35×2=70;
使3×7被5除余1,用21×1=21;
使3×5被7除余1,用15×1=15。
(70×2+21×3+15×2)%(3×5×7)=23
同样,这道题也应该是:
使33×28被23除余1,用33×28×6=5544;
使23×33被28除余1,用23×33×19=14421;
使23×28被33除余1,用23×28×2=1288。
(5544×p+14421×e+1288×i)%(23×28×33)=n+d
n=(5544×p+14421×e+1288×i-d)%(23×28×33)
完整代码:
#include <functional> #include <algorithm> #include <iostream> #include <fstream> #include <sstream> #include <iomanip> #include <numeric> #include <cstring> #include <climits> #include <cassert> #include <complex> #include <cstdio> #include <string> #include <vector> #include <bitset> #include <queue> #include <stack> #include <cmath> #include <ctime> #include <list> #include <set> #include <map> using namespace std; #pragma comment(linker, "/STACK:102400000,102400000") typedef long long LL; typedef double DB; typedef unsigned uint; typedef unsigned long long uLL; /** Constant List .. **/ //{ const int MOD = int(1e9)+7; const int INF = 0x3f3f3f3f; const LL INFF = 0x3f3f3f3f3f3f3f3fLL; const DB EPS = 1e-9; const DB OO = 1e20; const DB PI = acos(-1.0); //M_PI; int p , e , i , d; int main() { #ifdef DoubleQ freopen("in.txt","r",stdin); #endif int cas = 1; while(~scanf("%d%d%d%d",&p,&e,&i,&d)) { if(p == -1 && e == -1 && i == -1 && d == -1) break; LL res = (5544 * p + 14421 * e + 1288 * i - d + 23 * 28 * 33 ) % (23 * 28 * 33); if(res <= 0) res = 23 * 28 * 33 - d; printf("Case %d: the next triple peak occurs in %lld days.\n" , cas ++ , res); } }
标签:剩余定理+大衍求一术
原文地址:http://blog.csdn.net/u013447865/article/details/40925967