题目名字
思路
每次取走苹果数量为 ⌈n/3⌉
重复执行 while循环,直到苹果被取完。同时记录拿走苹果所需的次数 cnt 在其中,我们特判如果 n,即此刻可以取走编号为 n的苹果,记录当前次数。最终输出。
代码
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
int n;
int main(){
scanf("%d",&n); // 读入
int cnt = 0,ans = 0; // 分别对应答案1,答案2
while(n > 0){ // 直到所有苹果被取完
cnt ++; // 取苹果的轮数加1
int sum = ceil((double)n / 3); // 需要拿走的苹果数量
if(n % 3 == 1 && ans == 0) ans = cnt; // 如果此刻可以拿走编号为 n 的苹果,记录
n -= sum; // 取走苹果
}
printf("%d %d\n",cnt,ans); // 输出
return 0;
}