0
点赞
收藏
分享

微信扫一扫

构造序列 x个 x^t --> x^{t+1}

老罗话编程 2022-03-11 阅读 37

原题链接
在这里插入图片描述

序列要求我们自己构造,和也是由自己决定,那么大可以假定一个初始值,进而按条件推出和,那么这个序列自然会满足条件
x个 x t x^t xt–> x t + 1 x^{t+1} xt+1
x t + 1 x^{t+1} xt+1和(x-1)个 x t + 1 x^{t+1} xt+1 --> x t + 2 x^{t+2} xt+2
自己构造,假定t从0开始,
首先 a 2 a_2 a2~ a x + 1 a_{x+1} ax+1这头x个数,x个 x 0 x^{0} x0,贡献和S1: x 0 + 1 x^{0+1} x0+1
接下来需要 (x-1)个 x 0 + 1 x^{0+1} x0+1和S1贡献和S2: x 0 + 2 x^{0+2} x0+2
这样一来,从 a 2 a_2 a2~ a n a_n an这些数分成了这些块
x + ( x − 1 ) + ( x − 1 ) … … + ( x − 1 ) x+(x-1)+(x-1)……+(x-1) x+(x1)+(x1)+(x1)
贡献的和逐渐上涨: x 0 + 1 x^{0+1} x0+1–> x 0 + 2 x^{0+2} x0+2–> x 0 + 3 x^{0+3} x0+3……
总块数: m = 1 + ( n − 1 − x ) / ( x − 1 ) m=1+(n-1-x)/(x-1) m=1+(n1x)/(x1) ,第一块对应 x 0 + 1 x^{0+1} x0+1 x 1 x^1 x1 ,往后递增
所以贡献的总和即 x m x^m xm,a1等于m

#include<iostream>
using namespace std;

int main() {
	int n,x;
	cin>>n>>x;
	int m=(n-1-x)/(x-1);
	cout<<m+1;
	for(int i=1;i<=x;i++)cout<<" "<<"0";//a2~a_{x+1}这x个数 
	for(int i=1;i<=m;i++){
		for(int j=1;j<=(x-1);j++){
			cout<<" "<<i;
			
		}
	} 
    return 0;
}



题解区

举报

相关推荐

0 条评论