队内赛一个有意思的题


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

   首先看如果一直蜗牛每半小时上升为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;
}


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值