小苹果
链接:https://www.luogu.com.cn/problem/P9748
思路
第一问比较简单。我们发现,每天拿走的苹果的总数除 $3$ 向上取整,换种说法:定义 $m$ 为目前的总数,那么每天取走的就是 $\lfloor\frac{m}{3}\rfloor$。
在看第二问的时候,我们发现了题目问的恰好是第 $n$ 个苹果什么时候取走,那么我们按上面的方式,当 $m \bmod 3 = 1$,那么苹果就是那一轮拿走的。
代码
#include <bits/stdc++.h>
using namespace std;
long long a[10005] = {1}, n, I, tt, II;
int main() {
cin >> n;
for (int i = 1; i <= 33; i ++) a[i] = a[i - 1] * 3;
int nn = n;
while (n) {
long long t = (n + 2) / 3;
n -= t;
I ++;
}
while (nn) {
long long t = (nn + 2) / 3;
if (nn % 3 == 1) {
tt = II;
break;
}
nn -= t;
II ++;
// if (nn % 3 == 1) {
// tt = II;
// break;
// }
}
cout << I << " " << tt + 1;
return 0;
}