你们谁帮我把这个 TLE 优化一下
2026-08-25 14:08:10
发布于:浙江
这个 TLE 优化需要顶尖数学高手,你们试试!
#include <bits/stdc++.h>
using namespace std;
int n, k;
// 不是我放 gcd 干嘛
// int gcd(int x, int y) {
// if (y) return gcd(y, x % y);
// return x;
// }
void dfs(int x, int y, int stp) {
if (x < y) swap(x, y);
if (stp == k) {
if (x == n || y == n) { // 达到目标且符合步数
cout << k;
exit(0);
}
return ;
}
if (x << (k - stp) < n) return ; // 剩下每一步都乘 2 也不足 n ,跳过
if (_______) return ; // 空搁这呢你们填
dfs(x * 2, x, stp + 1);
dfs(x * 2, y, stp + 1);
dfs(x, y * 2, stp + 1);
dfs(y * 2, y, stp + 1);
dfs(x + y, y, stp + 1);
dfs(x + y, x, stp + 1);
dfs(x - y, y, stp + 1);
dfs(x, x - y, stp + 1);
}
int main() {
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n;
// ID 迭代加深算法
k = int(log(n) / log(2)); // 最少步数 log n
while (1) { // 不怕,上面有 exit(0) 在
dfs(1, 0, 0);
k++;
}
return 0;
}
这里空空如也













有帮助,赞一个