​传送门​

题目大意

构造一个长度为n的序列使其满足下列条件:

  • 任意两数的最大公约数不等于1
  • 所有数的最大公约数等于1
  • 任意两数互不相同
  • 若有多组解,输出任意一组。若无解,输出-1。 输出的数长度不能超过100位。

思路

有四个质数就可以构造出来三个数
Codeforces 66 D_i++是四个质数
那么构造的三个数是 Codeforces 66 D_i++_02这三个数是满足条件的,那么剩下的数就可以构造成Codeforces 66 D_最大公约数_03

ll fun(ll a,ll b)
{
ll ans=1;
while(b)
{
if(b&1)
ans=1ll*ans*a;
a=1ll*a*a;
b>>=1;
}
return ans;
}

int main(){
int n;
cin>>n;
if(n==2){
puts("-1");
}
else{
for(int i=1;i<=n-2;i++){
printf("%lld\n",fun(2,i)*3);
}
cout<<"15"<<endl;
cout<<"70"<<endl;
}
}