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 个整数 h 和 c.
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;
}