Phoenix and Science

D - Phoenix and Science

参考:Codeforces Round #638 (Div. 2) Editorial

mass的总和只与每天晚上的菌落个数有关,如果当天晚上的菌落个数为 x ,那么第二天可以增加的菌落个数为x~2*x,所以,为了尽快达成目标,只好每次都以 2*x 的速度增加,直到将要超过目标数量。

如果此时与目标菌落数还差d,可以将这个值插入前面得到的序列中, 这是不影响它的过程的。

// Created by CAD on 2020/5/5.
#include <bits/stdc++.h>

using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t;cin>>t;
    while(t--){
        vector<int> ans;
        int n;cin>>n;
        for(int i=1;i<=n;i*=2){
            ans.push_back(i);
            n-=i;
        }
        if(n>0) ans.push_back(n);
        sort(ans.begin(),ans.end());
        cout<<ans.size()-1<<"\n";
        for(int i=0;i<ans.size()-1;++i)
            cout<<ans[i+1]-ans[i]<<" ";
        cout<<"\n";
    }
    return 0;
}
posted @ 2020-05-05 11:04  caoanda  阅读(149)  评论(0编辑  收藏  举报