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;
}
分类:
CSP-J复赛真题解析
标签:
数论
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】