武进区第9届程序设计比赛-----咬人的狗

咱们先来分析题目

在附近的一个村庄中,有邮递员、送奶工和清洁工。每天早上,他们三位都勤勤恳恳地重复着无聊的工作。

可是有一天,当他们陆续来到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;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值