题意很简单,就是判断在把手机卖出之前最多能玩多少天,能玩手机的前提是要有足够的电量。第i天充电能获得i单元的电量,第i天玩手机需要消耗i单位的电量。
思路:模拟,能玩的时候就玩,因为数据范围过大,模拟的时候不能一天一天模拟,需要跳跃式模拟。
ac代码:
- #include <iostream>
- #include <cstdio>
- using namespace std;
- int main()
- {
- int numcase;
- scanf("%d",&numcase);
- for(int i = 1;i <= numcase;++i)
- {
- int m,n;
- scanf("%d%d",&m,&n);
- int sum = 0;
- if(n - m <2)
- {
- sum = 0;
- continue;
- }
- else
- {
- while(m <= n)
- {
- int x = 2 * m + 1 - m - 2;
- m += 2;
- if(n >= m + 2*x + 1)
- {
- sum += (x + 1);
- m = m + 2*x + 1;
- }
- else
- {
- int y = (n - m)/2;
- sum += (y + 1);
- break;
- }
- }
- }
- printf("Case #%d: %d\n",i,sum);
- }
- return 0;
- }