#include<bits/stdc++.h>
#define ll long long
using namespace std;
//方法是通过在每个数的前后补上相应不重复的数,因此发现规律只要找出没出现过的数,和原有的数一起存入集合,再循环输出
//eg: 5 4
// 2 1 2 41
//12341234123412341234
int main( )
{
int t,n,k;
cin>>t;
for(int i=0; i<t; i++)
{
int n,k;
cin>>n>>k;
int a[n];
set<int>aa;
int b[105]= {0};
for(int j=0; j<n; j++)
{
cin>>a[j];
aa.insert(a[j]);//存放出现过的数
b[a[j]]=1;//记录已出现过的数
}
if(aa.size()>k)//数的种类大于周期数,无法成立
{
cout<<-1<<endl;
}
else//如果数的种类小于周期数,少了几种数补几种数,补的数不能和a[j]中标记的数重复
{
int s=k-aa.size();//要补s个数
for(int j=1,kk=0;kk<s;j++)
{
if(b[j]==0)//要补几个数就再增加标记几个数
{
b[j]=1;
aa.insert(j);
kk++;
}
}
cout<<n*k<<endl;
for(int j=0;j<n;j++)//循环输出集合aa中的数即可
{
for(auto it=aa.begin();it!=aa.end();it++)
{
cout<<*it<<" ";
}
}
cout<<endl;
}
}
return 0;
}
5.18 Vj B - Phoenix and Beauty
原文:https://www.cnblogs.com/SyrupWRLD999/p/12913648.html