队内赛一个有意思的题


   这道题理解不难~~但过程需要仔细思考..代码也简单...

   首先看如果一直蜗牛每半小时上升为10下降为20但坑的高度只有10那蜗牛照样可以一次性出去...以这种思路看如果是

    10  9 5 这种数据...蜗牛在一天过后的位置将是4然后第二天就能出去了....(注意绝不是10/(9-5)向上取整=3 而是2天就能出去)

   如果蜗牛爬啊爬...某一天结束爬到了>=h-i 的位置那么下一天就能出去了....所以只要求出这个时间再加上1...

   ( h - i ) %( i - j ) == 0 那么蜗牛显然在 ( h-i) /( i-j ) 天能到达 ( h- i ) 的位置... 再多一天就能正好出去.. 

   ( h - i ) % ( i - j ) ! = 0 那么蜗牛在 ( h-i ) / (i - j ) 天能达到 ( h - i )下面的某个不低于 ( h - i - ( i-j )  ) 的位置.. 那么再用一天蜗牛能超过 h-i 的位置..再多一天蜗牛就能出去...

   还有就是Never see sun!的情况... h > i  && i-j<=0 

Program:

#include<iostream>
#include<stdio.h>
using namespace std;
int n,h,i,j;
void make()
{
    int a1,a2,k=i-j;    
    if (h<=i)
    {
         printf("1\n");
         return;        
    }
    if (k<=0) 
    {
         printf("Never see sun!\n");
         return;         
    }   
    a1=(h-i)/k;
    if (h-(h-i)/k*k==i) a1++;
    else a1+=2;
    printf("%d\n",a1);
    return;
}
int main()
{
    scanf("%d",&n);
    while (n--)
    {
         scanf("%d%d%d",&h,&i,&j);
         make();    
    }
    return 0;
}


你可能感兴趣的:(队内赛一个有意思的题)