1006 Biorhythms

#include<stdio.h>    
#define r1 23    
#define r2 28    
#define r3 33    
int gcd(int a,int b){    
     int t1 = a,t2 = b,t;    
     while(a % b != 0){    
         t = a%b;    
         a = b;    
         b = t;    
     }    
     return t1 / b * t2;    
}    
int computeRN(int a,int b,int r) {    
    int t,i;    
    t = gcd(a,b);    
    if(t % r == 1) {    
        return t;    
    } else {    
        for(i = 2;;i++)    
            if(i * t % r == 1)    
                return i * t;    
    }    
        
}    
int main() {    
    int p,e,i,d,day,time = 1;    
    int RD,R1,R2,R3;    
    while(scanf("%d %d %d %d",&p,&e,&i,&d) != EOF) {    
        if(p == -1) break;    
        RD = gcd(gcd(r1,r2),r3);    
        R1 = computeRN(r2,r3,r1);    
        R2 = computeRN(r1,r3,r2);    
        R3 = computeRN(r1,r2,r3);    
        day = (p * R1 + e * R2 + i * R3 + RD - d) % RD;    
        day = day ? day : RD;    
        printf("Case %d: the next triple peak occurs in %d days.\n",time++,day);    
   
    }    
}   

你可能感兴趣的:(C++,c,C#)