2 条题解

  • 0
    @ 2025-7-11 17:00:39

    模拟题:

    • 循环模拟第n天;
    • 每三个苹果为一组,一次可以在每组中取一个;最后不满三个的也为一组;
    • 要想拿到最后一个苹果,则需要最后一个苹果是最后一组的第一个并且该组仅有一个苹果。即apple_num%3=1;
    #include<iostream>
    using namespace std;
    int main(){
        int apple_num;
        cin>>apple_num;
        int day = 0, take_n_day = 0;
        bool is_take_last = false;
        // 循环求解可以拿多少次
        while(apple_num!=0){
            day++;
            // 是不是拿的最后一个
            if(apple_num%3==1 && !is_take_last){
                take_n_day = day;
                is_take_last = true;
            }
            // 每次拿几个
            int last_group_need_one = 0;
            if(apple_num%3!=0){
            last_group_need_one = 1;
            }
            int once_take = apple_num/3 + last_group_need_one;
            apple_num -= once_take;
        }
        cout<<day<<" "<<take_n_day<<endl;
    }
    

    信息

    ID
    13715
    时间
    1000ms
    内存
    512MiB
    难度
    3
    标签
    递交数
    81
    已通过
    34
    上传者