这题主要就是读题目的意思
就是说有三个循环 这些循环会踩数轴上的点
现在给你三个点 分别是三个循环其中的一个点
三种循环的周期已知 让你求出它们踩点重合的地方
用重合处的值减去某给定值的最小正值就是答案
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
int main(){
int p,e,i,d;
int rec[22262][3];
int q=1;
while(cin>>p>>e>>i>>d){
memset(rec,0,sizeof(rec));
if(p==-1&&e==-1&&i==-1&&d==-1){
break;
}
int tmp;
tmp=p;
while(tmp>=0){
rec[tmp][0]=1;
tmp-=23;
}
tmp=p;
while(tmp<=22252){
rec[tmp][0]=1;
tmp+=23;
}
tmp=e;
while(tmp>=0){
rec[tmp][1]=1;
tmp-=28;
}
tmp=e;
while(tmp<=22252){
rec[tmp][1]=1;
tmp+=28;
}
tmp=i;
while(tmp>=0){
rec[tmp][2]=1;
tmp-=33;
}
tmp=i;
while(tmp<=22252){
rec[tmp][2]=1;
tmp+=33;
}
for(int i=0;i<=22252;i++){
if(rec[i][0]&&rec[i][1]&&rec[i][2]){
if(i-d>0){
cout<<"Case "<<q++<<": the next triple peak occurs in "<<i-d<<" days."<<endl;
break;
}
}
}
}
return 0;
}