题目大意:每天拿走第1、4、7、……个苹果,多少天拿完n个苹果?编号为n的苹果第几天被拿走?
题目描述
小 Y 的桌子上放着 $n$ 个苹果从左到右排成一列,编号为从 $1$ 到 $n$。
小苞是小 Y 的好朋友,每天她都会从中拿走一些苹果。
每天在拿的时候,小苞都是从左侧第 $1$ 个苹果开始、每隔 $2$ 个苹果拿走 $1$ 个苹果。随后小苞会将剩下的苹果按原先的顺序重新排成一列。
小苞想知道,多少天能拿完所有的苹果,而编号为 $n$ 的苹果是在第几天被拿走的?
输入输出格式
输入格式
输出格式
输入输出样例
输入样例 #1
8
输出样例 #1
5 5
说明
**【样例 $1$ 解释】**
小苞的桌上一共放了 $8$ 个苹果。
小苞第一天拿走了编号为 $1$、$4$、$7$ 的苹果。
小苞第二天拿走了编号为 $2$、$6$ 的苹果。
小苞第三天拿走了编号为 $3$ 的苹果。
小苞第四天拿走了编号为 $5$ 的苹果。
小苞第五天拿走了编号为 $8$ 的苹果。
**【样例 $2$】**
见选手目录下的 apple/apple2.in 与 apple/apple2.ans。
**【数据范围】**
对于所有测试数据有:$1\leq n\leq 10^9$。
| 测试点 | $n\leq$ | 特殊性质 |
| :———-: | :———-: | :———-: |
| $1\sim 2$ | $10$ | 无 |
| $3\sim 5$ | $10^3$ | 无 |
| $6\sim 7$ | $10^6$ | 有 |
| $8\sim 9$ | $10^6$ | 无 |
| $10$ | $10^9$ | 无 |
特殊性质:小苞第一天就取走编号为 $n$ 的苹果。
解题思路
每次n规模减少1/3,三分复杂度不超时。
具体地说,就是每3个苹果减少一个,不足3个部分也要拿走1个,所以每天减少ceil(n/3.0),手动向上取整加上2即可。
至于第n个什么时候被拿走,只需要每次拿的时候判断最后一个是否为1、4、7……即可,即模3是否余1。
原来是这样用的 😉