P7567 「MCOI-05」魔仙 题解
题目传送门
这题我在比赛中推了30min才推出来结果发现是原题。。。
菜是原罪
先证一下n是4的倍数:
设这
1.数列中有
则
所以
与
2.数列中有
则
所以
所以
再次与
3.数列中有
则
所以
所以
不与
因此,此序列中至少有
再来看看怎么求出数列:
因为
1.当
验证:
(1).和:
(2).积:
2.当
验证:
(1).和:
(2).积:
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
if(n%4==0){
int k=n/4;
if(k%2==1){
printf("2 -%d ",k*2);
for(int i=1;i<=3*k-2;i++){
printf("1 ");
}
for(int i=1;i<=k;i++){
printf("-1 ");
}
}else{
printf("-2 -%d ",k*2);
for(int i=1;i<=3*k;i++){
printf("1 ");
}
for(int i=1;i<=k-2;i++){
printf("-1 ");
}
}
printf("\n");
}else{
printf("w33zAKIOI\n");
}
}
return 0;
}
//w33z AK IOI!