本文主要是介绍【寒假每日一题·2024】AcWing 5307. 小苹果(补),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一、题目
- 1、原题链接
- 2、题目描述
- 二、解题报告
- 1、思路分析
- 2、时间复杂度
- 3、代码详解
- 三、知识风暴
一、题目
1、原题链接
5307. 小苹果
2、题目描述
二、解题报告
1、思路分析
思路参考y总:y总讲解视频
(1)根据题目可以分析出:每次取走的苹果数为n/3上取整个。
(2)由于每次都取走每三个苹果中的第一个,所以可以分析得出:当编号为n的苹果,也就是最后一个苹果处于最后一组三个苹果中的第一个时,它在该时候被取走(即n%3==1时)。
(3)根据题目及思路进行模拟即可。
2、时间复杂度
时间复杂度为O(logn)
3、代码详解
#include <iostream>
#include <cmath>
using namespace std;
int main () {int n;cin >> n;int cnt = 0; //记录当前天数bool flag = false; //记录编号为n的苹果是否被拿走int ans = 0; //记录编号为n的苹果第几天被拿走 while (n) {cnt++;//n % 3 == 1时是编号为n的苹果被拿走的时候if (!flag && n % 3 ==1){ans = cnt; flag = true;} //每次拿走的苹果数是n/3上取整的结果n -= ceil((double)(n) / 3);}cout << cnt << ' ' << ans;return 0;
}
三、知识风暴
- 上、下取整函数
- 头文件
#include <cmath>
- 上取整函数:
double ceil(double x);
- 下取整函数:
double floor(double x);
- 参考博文:这里,感谢博主分享!
这篇关于【寒假每日一题·2024】AcWing 5307. 小苹果(补)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!