#include <bits/stdc++.h>
using namespace std;
int main(){
int n=(cin>>n,n), sum=0, i=1, last[33];
for(int i=0;i<33;i++) last[i]=0;
while(sum<n){
int r = __builtin_popcount(i);
sum+=r;
last[r]=i++;
// cout<<"["<<sum<<"]";
}
// cout<<"{"<<sum-n<<endl;
cout << (n==sum ? i-1 : i-2) <<'\n';
for(int j=i-1;j>0;j--) if(j!=last[sum-n]) cout<<j<<" ";
cout<<endl;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <bits/stdc++.h> using namespace std; int main(){ int n=(cin>>n,n), sum=0, i=1, last[33]; for(int i=0;i<33;i++) last[i]=0; while(sum<n){ int r = __builtin_popcount(i); sum+=r; last[r]=i++; // cout<<"["<<sum<<"]"; } // cout<<"{"<<sum-n<<endl; cout << (n==sum ? i-1 : i-2) <<'\n'; for(int j=i-1;j>0;j--) if(j!=last[sum-n]) cout<<j<<" "; cout<<endl; } |
English