本帖最后由 ultra1989 于 2010-10-27 08:54 编辑 7 t3 T3 ]/ u9 l$ [, ?6 a 0 k8 V/ n9 k/ p" U" J% c t用float可能会有精度问题用中国剩余定理求解5 z4 ^) w6 f$ `. v4 V& A
参考程序:$ v* w- Y/ K' ]; N
, ^; E9 c, q! t) b* K: X/ K#include<stdio.h>8 R& A2 I6 h! `# o% v, ~1 V$ f% o( y
int main(){ : P r8 Z' P1 ~ int a,b,c,m,n,i,d=1;- B) F! w2 q0 w9 q/ R# S
while(scanf("%d%d%d%d",&a,&b,&c,&m)){; Y! s5 I. U2 `9 F3 F1 v) N
: }. U. C% J B+ G0 X2 I5 K0 Qif(a==-1&&b==-1&&c==-1&&m==-1) break; ' i$ \- q, \( Z* \! e+ ^$ v1 m- _' i6 d! l1 \
n=0;, i; V* x- S- f4 C7 ?& }3 M
" ~- g0 i+ @$ t- b
i=(5544*a+14421*b+1288*c-m+21252)%21252;: V5 [9 A s* Z. j8 l* Z O
4 S+ w% y0 c3 C. H
if(!i)5 X! Y4 V ]$ A- s8 n% }- T4 p
0 J' y1 n$ l6 p3 n+ z% d2 `8 b9 di=21252;1 H2 D: |( D8 z- m5 {
3 y0 E1 T# Z6 y/ b8 _ F+ V: K
printf("Case %d: the next triple peak occurs in %d days.\n",d++,i); - `$ i6 p1 I& n8 ?/ r4 j ; z1 p8 a Z6 O# Y }) a8 A& M' Q) \- M; g$ ~
( Z+ a2 E; Z2 W- Dreturn 0;# p5 X+ M& F( W" `2 l# T
}/ h% I. v. q7 S+ o2 a5 K7 k( e' t& n
% N# d N, _1 Q, p. D1 y