问题 F: 小明与隔壁老王之间不得不说的故事

来源:互联网 发布:飞客数据恢复怎么样 编辑:程序博客网 时间:2024/06/10 04:34

题目描述

有一天,小明想偷吃隔壁老王院子里苹果树上的苹果。

但是,老王家有一条哈士奇,每隔一定时间就会吼叫。准确的说,它会在一个时间点吼叫第一次,之后每隔一段时间吼叫两次,比如第一次吼叫是在t时刻,间隔为s,则吼叫时间点为t, t + s, t + s + 1, t + 2s, t + 2s + 1等。

小明是个要面子的人,不想被这么二的汪吼,所以想请你预测一下结果。

给出吼叫时间和小明的行动时间,如果会被吼则输出”YES”,否则输出”NO”。


输入

第一行一个整数T,表示数据组数

对于每组数据,给出三个整数t s x,分别表示第一次吼叫的时间,吼叫间隔,和小明行动时间。

数据约定:

0 ≤ t, x ≤ 1e9, 2 ≤ s ≤ 1e9

输出

输出YES或NO

样例输入

4
3 10 4
3 10 3
3 8 51
3 8 52

样例输出

NO
YES
YES
YES

这个题做了许多遍,始终没找出bug在哪,到最后也没能提交/(ㄒoㄒ)/~~
wa代码:
#include <cstdio>#include <iostream>using namespace std; int main(){    ios::sync_with_stdio(false);    int s, t, x;    int T;    cin>>T;    while(T--)    {        int flag = 0;        cin>>s>>t>>x;                 if(s>=2)        {            int i = 0;        int k = x - s;        while(k >= 0)        {            if(k == 0)            {                flag = 1;                break;            }            if(i > 0)                if(k - 1 == 0)                {                    flag = 1;                    break;                }            i++;            k = x - s - i * t;        }        if(flag)            printf("YES\n");        else            printf("NO\n");        }             }    return 0;}
ac代码:
#include <iostream>#include <string>#include <iomanip>#include <algorithm>using namespace std;int main(){    int z,t,x,i,s;    int T;    cin>>T;    for(int j=0;j<T;j++)    {        int i=1;        cin>>t>>s>>x;        z=t;        while(z<x)        {            z=t+i*s;             if(z<x)            {                z++;            }            i++;        }        if(z==x)            cout<<"YES"<<endl;        else            cout<<"NO"<<endl;    }    return 0;}
港真,能看懂ac的代码,但是觉得也找不出自己的错在哪……心累


NO
YES
YES
YES
0 0
原创粉丝点击