Codeforces Round #761 (Div. 2) B. GCD Problem
B. GCD Problem
题意#
组数据,给定一个数字 ,请你找出三个不同的正整数 满足 ,并且 。
SOLUTION#
思路一:
首先想到对 分解质因数,然后枚举 ,但是这样复杂度是不太对的。 考虑固定 ,然后题目转化为枚举 ,即将 分成两个互质的数字的和,由于 不可能是很多质数的倍数,因此暴力枚举 即可。
代码一:
点击查看代码
inline void solve() {
int n; read(n);
for(int i = 2; ; i ++ ) if(gcd(i, n - i - 1) == 1) {
printf("%d %d %d\n", i, n - i - 1, 1);
break;
}
}
思路二
分析和思路一一样,但是我们可以随机化!
代码二
点击查看代码
mt19937_64 rnd(chrono::steady_clock::now().time_since_epoch().count());
void solve() {
int n; cin >> n;
while (true) {
// 生成 (2 - n - 2) 的随机数
int a = rnd() % (n - 3) + 2;
// int a = uniform_int_distribution<int>(2, n - 2)(rnd);
int b = n - a - 1;
if (a != 1 && b != 1 && __gcd(a, b) == 1) {
cout << a << " " << b << " " << 1 << "\n";
break;
}
}
}
分类:
Codeforces
, 思维
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?