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;
}