CSP历年复赛题-P9748 [CSP-J 2023] 小苹果

原题链接:https://www.luogu.com.cn/problem/P9748

题意解读:n个苹果,每天从第1个开始,每三个苹果拿走第一个,问几天拿完,最后一个苹果第几天拿走。

解题思路:

由于每三个苹果拿一个,每天拿走的苹果数量是 ⌈n / 3⌉,即(n+2) / 3

n每天都要减去(n+2) / 3,直到n为0,记录天数即可得到总天数

最后一个苹果什么时候拿走?必须是在n % 3 == 1的时候,所以判断当第一次n % 3 == 1时,记录下第几天即可。

100分代码:

#include <bits/stdc++.h>
using namespace std;

int n, cnt, nth;

int main()
{
    cin >> n;
    while(n)
    {
        cnt++;
        if(n % 3 == 1 && nth == 0) nth = cnt; //如果n%3余1,则会取走最后一个苹果
        n -= (n + 2) / 3; //每天取走“n/3向上取整”个苹果
    }
    cout << cnt << " " << nth;

    return 0;
}

 

posted @ 2024-06-20 10:53  五月江城  阅读(234)  评论(0编辑  收藏  举报