CSU 2165 思维

http://acm.csu.edu.cn:20080/csuoj/problemset/problem?pid=2165

Description

假设 Bobo 位于时间轴(数轴)上 t0 点,他要使用时间机器回到区间 (0, h] 中。

当 Bobo 位于时间轴上 t 点,同时时间机器有 c 单位燃料时,他可以选择一个满足 ⌈x/h⌉⋅h≤c的非负整数 x, 那么时间机器会在 [0, x] 中随机整数 y,使 Bobo 回到 (t − y) 点,同时消耗 y 单位燃料。 (其中 ⌈ ⋅ ⌉ 表示上取整)

因为时间机器的随机性,对于给出的参数 h 和时间机器剩余燃料 c,Bobo 想知道能够保证回到区间 (0, h] 中的 t0 的最大值。

  • 1 ≤ h ≤ 109
  • 0 ≤ c ≤ 109
  • 数据组数不超过 105.

Input

输入文件包含多组数据,请处理到文件结束。

每组数据包含 2 个整数 hc.

Output

对于每组数据输出 1 个整数表示 t0 的最大值。

Sample Input

100 99
100 100
100 149

Sample Output

100
101
150

Hint

对于第一组样例,因为剩余燃料 c = 99 < 100,Bobo 只能选择 x = 0,从而 y = 0。所以当 t0 > h = 100 时,Bobo 一定无法回到目标区间。

对于第二组样例,当 t0 = 102 时,选择 x = 2,可能随机到 y = 1,此时位于 t = 101,燃料 c = 99,任务失败。所以 t0 < 102.

Source

2018湖南省第14届大学生计算机程序设计竞赛

Author

ftiasch

思路:一道抖机灵的题目。(1)当h>c时,可以推得x=0且只能=0,这个时候飞船走不了了,因此Tmax=h;(2)当h<=c时,由上述分析知最多消耗c-h+1单位燃料(即消耗这么多燃料的时候必须得回去),因此Tmax=h+c-h+1=c+1。

#include<iostream>
#include<cstdio>
using namespace std;

int main()
{
    int c,h;
    while(~scanf("%d%d",&h,&c))
    {
        if(h>c)
            printf("%d\n",h);
        else
            printf("%d\n",c+1);
    }
    return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值