思路:可以证明n=X+m(X-1)+1 (m>=0),如果除去a[1].那么就是X+m(X-1)个数。
因为每X个X^t的和=X^(t+1),然后再从m(X-1)个中拿出X-1个数和X^(t+1)合成X^(t+2)
一直到合成只有一个数X^(t+m+1)。t可以任意取。
#include <bits/stdc++.h> #define LL long long using namespace std; vector<int> v; int main(){ int n, x; scanf("%d%d", &n, &x); int m=(n-1-x)/(x-1); for(int i=1; i<=x; i++){ v.push_back(0); } for(int i=1; i<=m; i++){ for(int j=1; j<=(x-1); j++){ v.push_back(i); } } printf("%d ", m+1); for(auto x: v){ printf("%d ", x); } printf("\n"); return 0; }