题解:[HNOI2006]鬼谷子的钱袋
表示n以内的任何数字可以用1到n/2内的数字
表示n/2以内的任何数字可以用1到n/4以内的数字
1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<algorithm> 5 using namespace std; 6 long long ans=0ll, n, cnt[100]; 7 int main(){ 8 scanf("%d",&n); 9 while(n){ 10 cnt[++ans]=(n+1)/2; 11 n/=2; 12 } 13 printf("%lld\n", ans); 14 sort(cnt+1,cnt+1+ans); 15 for(int i=1; i<=ans; i++){ 16 printf("%lld ", cnt[i]); 17 } 18 return 0; 19 }
"Hello World!"