[CP / Codeforces] B. Playing with GCD (Div. 2)
分析
尽管难度只有 1200*,不过是一道很有意思的题目,而且我的水平也就 1300*。
题目大意是给你一个有
一开始我毫无思路。
这种情况持续了至少半个小时。
不过,总得有思路吧?
我想,最笨的方法,能不能一个元素一个元素地把数组
就比如对于
接下来,我们需要构造合适的
问题来了,
我得出结论:“一个元素一个元素地把数组
转换思路。我们的目标是“判断是否存在满足条件的数组
因此,需要观察数组
Observation 1:
由题目要求得
注意到
Observation 2:
由前一个 observation 我们知道
代入题目要求的式子,有:
关键的一步来了。我们知道:两个数的最大公因数是它们的公因数中最大的那个(好像什么都没说),而
分类讨论:
如果
如果
综上,如果存在满足题目要求的数组
得到下面的代码:
代码
void solve() { int n; std::cin >> n; std::vector<int> v(n); for (int i = 0; i < n; i++) { std::cin >> v[i]; } for (int i = 1; i < n - 1; i++) { if (std::gcd(std::lcm(v[i - 1], v[i]), std::lcm(v[i], v[i + 1])) != v[i]) { std::cout << "NO\n"; return; } } std::cout << "YES\n"; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理