对于每一个数i,我们都可以用i/2来表示,而对于i/2我们可以用i/4表示......(以此类推)
举个例子,对于10,我们可以用5 + 5来表示,而5可以用 3 + 2表示,2 可以用1 + 1表示,所以对于10,我们只需要5,3,2,1即可.
1 #include<cstdio> 2 #include<iostream> 3 4 using namespace std; 5 6 int m,ans[2000000],k; 7 8 int main() 9 { 10 scanf("%d",&m); 11 while(m) { 12 ans[++k] = (m + 1) / 2; 13 m /= 2; 14 } 15 printf("%d\n",k); 16 k++; 17 while(--k) 18 printf("%d ",ans[k]); 19 return 0; 20 }
原文:https://www.cnblogs.com/lipeiyi520/p/11306013.html