存钱达人

题目描述:

小C的打工存钱计划遵循以下规则:
 
1. 小C从第 1 天开始打工。第 1 周(第 1 到第 7 天),他每天可以获得 1 元的工资;第 2 周(第 8 到第 14 天),每天获得 2 元的工资;以此类推,第 w 周的每天获得 w 元工资。
2. 小C的钱包最多只能存放 K 元钱。
3. 每天结算工资时,小C会计算 当前钱包内原有的钱 加上 今天的工资 是否会大于钱包容量 K。
  • 如果 没有超过 K,小C就会正常领取今天的工资,放入钱包中。
  • 如果 超过 K(即钱包装不下了),小C会选择 放弃当天的全部工资,立刻打车去银行,将钱包里的钱 全部存入银行,存完后,钱包内的金额清零。这一天随之结束。
4. 一旦在某次去银行存钱后,银行账户里的总金额 第一次大于或等于 目标金额 M,小C就会心满意足地结束打工旅程,而这一天就是他达成目标的总天数。
 
每组测试数据给定钱包容量 K 和目标金额 M,请你求出小C的银行账户哪一天第一次至少有 M 元。如果小C永远无法存够 M 元,请输出 `-1`。

输入格式:

第一行包含一个正整数 $T$,表示测试数据的组数。
接下来 $T$ 行,每行包含两个正整数 $K$ 和 $M$,分别表示小C的钱包容量和需要达成的目标金额。两个整数之间由一个空格隔开。

输出格式:

输出共 $T$ 行,每行包含一个整数,表示对应测试数据中小C银行账户第一次至少达到 $M$ 元的具体天数。如果永远无法达到,请输出 `-1`。

数据范围:

对于 $100\%$ 的数据,满足 $1 \le T \le 10$。

测试点编号 K≤ M≤ 特殊性质 分值占比
1∼5 100 3×104 保证一定有解 16%
6∼10 100 4×104 无 16%
11∼20 105 1011 无 34%
21∼30 107 1014 无 34%

样例输入:

(双击复制)
2
2 3
1 10

样例输出:

(双击复制)
6
-1

提示:

样例解释 #1

第一组数据(钱包容量 K=2,目标金额 M=3):

  • 第 1 天:工资 1 元。钱包原 0 元,$0+1 \le 2$,领取工资,钱包变为 1 元。
  • 第 2 天:工资 1 元。钱包原 1 元,$1+1 \le 2$,领取工资,钱包变为 2 元。
  • 第 3 天:工资 1 元。钱包原 2 元,$2+1 > 2$。放弃今天工资,去银行存钱,银行账户新增 2 元(总计 2 元),钱包清零。
  • 第 4 天:工资 1 元。钱包原 0 元,$0+1 \le 2$,领取工资,钱包变为 1 元。
  • 第 5 天:工资 1 元。钱包原 1 元,$1+1 \le 2$,领取工资,钱包变为 2 元。
  • 第 6 天:工资 1 元。钱包原 2 元,$2+1 > 2$。放弃今天工资,去银行存钱,银行账户新增 2 元(总计 4 元),钱包清零。此时银行账户 $4 \ge 3$,达到目标,输出第 6 天。

第二组数据(钱包容量 K=1,目标金额 M=10):

第一周,小C每隔一天就会去存一次钱,每次存 1 元,到第 7 天结束时,银行账户总计 3 元,钱包内 1 元。从第 8 天开始进入第二周,每天工资为 2 元,$1 + 2 > K$,放弃今天工资去存钱(银行总计 4 元),钱包清零。接下来的每一天,工资都装不进空钱包,小C都会空钱包跑去存钱(存入 0 元),银行余额将永远停留在 4 元,永远无法达到 10 元,故输出 `-1`。

时间限制: 1000ms
空间限制: 256MB

来源: 温州市计算机学会