P9748题解

· · 题解

小苹果题解

思路

子问题1

假设第 i 天剩余 n 苹果。
观察发现,第 i + 1 天会拿走 \lfloor n/3 \rfloor 个苹果,也就是 n-=ceil(n/3.0) (把3.0改成3会炸)。

子问题2

仍然假设第 i 天剩余 n 个苹果。 观察发现,如果剩余的第 i 个苹果 i \equiv 1 (mod 3),那么这个苹果会被拿走。所以只需要判断 i%3==1 就好了。

代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,ans1=0,ans2=0;
    scanf("%d",&n);
    for(int i=1;;i++){
        if(n==0) break;
        if(ans2==0 && n%3==1) ans2=i;
        n-=ceil(n/3.0),ans1++;
    }
    printf("%d %d",ans1,ans2);
    return 0;   
}