题目
题目链接:https://www.luogu.com.cn/problem/P9748
思路
除去第一个苹果(第一个苹果必会取),每三个苹果中取一个,一天能取多少苹果就是(n-1)/3,剩下的苹果个数就是n-((n-1)/3+1),更新苹果数目再重复上述步骤计算,直到苹果去完为止。编号为n的苹果无论怎么重新编号永远是最后一个,当((n-1)/3)*3+1的结果等于n的时候就证明编号为n的苹果肯定被取了,记录一下天数即可。
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,day=0,t,b=0;//b表示编号为n的苹果被取走的天数
cin>>n;
while(n)
{
t=(n-1)/3; //t表示能取几个苹果
day++;
if(n==t*3+1&&b==0)
{
b=day;
}
n-=t+1; //剩下的苹果 +是因为第一个苹果会被取
}
cout<<day<<" "<<b<<endl;
}