My code
#include<iostream> using namespace std; int main(){ int a[1000000]{0,1},n;cin>>n; for(int i=2;i<=n;i++){ if(i%2==1)a[i]=a[(i-1)/2]+2; else a[i]=a[i/2]+1; } cout<<a[n]-1;//这里为什么要减1 }
见注释,当时测试样例的时候没有减去1,比样例大了1,然后就直接减去1就AC了