2020-05-18 — 习题训练一B - Phoenix and Beauty

VJ

B - Phoenix and Beauty

 题意:给定序列长n的数组和周期k。完美数组的定义是数组中每一个连续k项的子段和为定值,

  现在要求插入一些数使得数组满足条件,输出构造的新数列长度及元素.

解题思路:记录原数组数字种类,与循环个数k相比较,记录原数组出现的数字,按周期n循环个数k输出.

ac代码:

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
	int t,n,k,a,i,j,max,b[105],c[105],kk;
	cin>>t;
	while(t--){
		cin>>n>>k;
		max=0;
		kk=0;
		for(i=0;i<105;i++) b[i]=0;
		for(i=0;i<n;i++){
			cin>>a;
			if(b[a]==0){
				b[a]=1;
				c[kk]=a;
				kk++;
			}
		}
		if(kk>k){
			cout<<"-1"<<endl;//判断数的种类kk是否大于循环个数k 
		}
		//将出现的数循环输出 
		else{
			for(i=kk;i<k;i++){
				c[i]=c[i-kk];
			}//将数组按k的个数为一组 
			cout<<n*k<<endl;
			for(i=1;i<=n;i++){
				for(j=0;j<k;j++){
					if(i==1&&j==0) cout<<c[j];
					else cout<<" "<<c[j];
				}
			}
			cout<<endl;
		}
	}
	return 0;
}

 

 

 

posted @ 2020-05-20 11:18  nanmoon  阅读(136)  评论(0编辑  收藏  举报