思路:在纸上试几个数就可以发现,比如6时,456同时减去4这个中间数,剩下123012其实只取决于123这部分f(6) = f(3) + 1。 所以有:f(n) = f(n/2) + 1,边界是f(1) = 1。
#includeusing namespace std; int f(int n) { return n == 1 1 : f(n/2) + 1; } int main() { int n; while(cin>>n) { cout<
还可以直接用二分的方法#includeusing namespace std; int main() { int n; while(cin>>n) { int ans = 0; while(n) { n>>=1; ans ++; } cout<