D题是把dfs卡超时了吗?为什么我过不了
#include<iostream> #include<algorithm> using namespace std; const int G = 1048576; int ans; void dfs(int u, int a, int b) { if(u > G || a + b >= ans)return; if(u == G) { ans = a + b; return; } dfs(u * 2, a, b + 1); dfs(u + 1, a + 1, b); } int main() { cin.tie(0); int T; cin >> T; while(T --) { int n; cin >> n; ans = 20; if(!(n % G)) ans = 0; else dfs(n % G, 0, 0); cout << ans << endl; } return 0; }