咱们先来分析题目
在附近的一个村庄中,有邮递员、送奶工和清洁工。每天早上,他们三位都勤勤恳恳地重复着无聊的工作。
可是有一天,当他们陆续来到18号房屋面前时,发现门口站着两只强壮的看门狗,让他们都不敢轻举妄动。
他们不知道的是,这两只狗的行动很有规律:当新的一天开始时,第一只狗在前A分钟具有攻击性,然后接下来的B分钟它就温顺得像一只猫。相似的,另一只狗前C分钟有攻击性,而后面D分钟就会平静下来。这两只狗都不断重复着各自的状态;一段时间内很凶猛,接下来一段时间内很温顺,再下来又会攻击人........
现在给出三个人分别到达18号房屋的时间,请你告诉每个人,他们到达时有几只狗具有攻击性。
输入:
第一行包含了四个整数A,B,C,D。
第二行包含三个整数P,M和G,分别表示邮递员、送奶工和清洁工到达的时间。例如当P等到3的时候,表示邮递员在第三分钟内的某个时刻到达了这所房子。
保证所有输入数据都小于2000。
输出:
答案共三行,每行输出"none","one","both"中的一个,依次表示每个人将被多少只狗攻击。"none"表示没有被攻击到,"one"表示被一只狗攻击,"both"表示被两只狗都攻击。
样例输入
2 2 3 3
1 3 4
样例输出
both
one
none
提示
要求
时间限制:1sec 内存限制:128M
分析:前A分钟有攻击性,接下来B分钟温顺,接下来又有攻击性,下面又温顺,由此可以得出攻击性加温顺构成一个循环,每过A+B分钟就构成一个循环或者每C+D分钟就构成一个循环
比如样例中的A=2,B=2,在第四分钟的时候它是属于温顺的,而我们采用循环来做,那4%4=0,是属于第0分钟,所以在做具体判断的时候还得注意一下。
上代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int A,B,C,D,E=0,F=0,H=0;
cin>>A>>B>>C>>D;
int P,M,G;
cin>>P>>M>>G;
if(P%(A+B)<=A &&P%(A+B)>0)
E++;
if(P%(C+D)<=C &&P%(C+D)>0)
E++;
if(M%(A+B)<=A &&M%(A+B)>0)
F++;
if(M%(C+D)<=C &&M%(C+D)>0)
F++;
if(G%(A+B)<=A &&G%(A+B)>0)
H++;
if(G%(C+D)<=C &&G%(C+D)>0)
H++;
if(E==0)
cout<<"none"<<endl;
else if(E==1)
cout<<"one"<<endl;
else if(E==2)
cout<<"both"<<endl;
if(F==0)
cout<<"none"<<endl;
else if(F==1)
cout<<"one"<<endl;
else if(F==2)
cout<<"both"<<endl;
if(H==0)
cout<<"none"<<endl;
else if(H==1)
cout<<"one"<<endl;
else if(H==2)
cout<<"both"<<endl;
}