D. Phoenix and Science(贪心&排序)
算法:贪心
时间复杂度:
思路:题目可以转化为构造一个数组: 使
最小。
根据贪心思想:将依次放入数组直到不能再放,若此时
刚好满足,否则将此时的
放入数组再排序即可。最后答案序列即为:
AC代码:
#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
int main(){
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
vector<int>v;
for(int i=1;i<=n;i*=2)
v.push_back(i),n-=i;
if(n>0) v.push_back(n);
sort(v.begin(),v.end());
printf("%d\n",v.size()-1);
for(int i=1;i<v.size();i++)
printf("%d ",v[i]-v[i-1]);
puts("");
}
return 0;
} 
京公网安备 11010502036488号