Pineapple Incident

时间: 1ms        内存:128M

描述:

泰德有一个菠萝。这种菠萝能够像斗牛犬一样吠叫!在时间t(以秒为单位),它第一次吠叫。然后每隔s秒后,它以1秒的间隔吠叫两次。因此它在时间tt + st + s + 1t + 2 st + 2 s + 1等时吠叫。

Barney早上醒来想要吃菠萝,但是当它吠叫时他不能吃。Barney计划在时间x(以秒为单位)吃它,所以他让你告诉他当时是否会吠叫。

输入:

一行包含三个整数,t,s,x0<=t,x<=10^9,2<=s<=10^9

输出:

如果菠萝在时间x吠叫,打印“YES”,否则打印“NO”.

示例输入:

3 10 4

示例输出:

NO

提示:

参考答案(内存最优[1120]):

#include<stdio.h>
#include<string.h>
using namespace std;
#define ll long long int
int main()
{
    ll a,b,c;
    scanf("%I64d%I64d%I64d",&a,&b,&c);
    if(a>c)
    {
        printf("NO\n");
    }
    if(a==c)
    {
        printf("YES\n");
    }
    if(a<c)
    {
        if(((c-a)%b==0)||((c-a)%b==1)&&(c-a)!=1)
        {
            printf("YES\n");
        }
        else printf("NO\n");
    }
}

参考答案(时间最优[1]):

#include<stdio.h>
int main()
{
    int t,x,s;
    scanf("%d%d%d",&t,&s,&x);
    int sum=t;
    int i=2;
    int flag=0;
    while(sum<=x)
    {  
        if(sum==x)
        {
        printf("YES");
        flag=1;
        }
        if(i%2==0)
            sum=t+i/2*s;
        else
            sum=t+i/2*s+1;
    i++;
    }
    if(flag==0)
    printf("NO");
    return 0;
    }

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。