思路:可以证明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;
}
京公网安备 11010502036488号