1 条题解

  • 0
    @ 2025-8-24 22:31:06

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar FuriousC
    **

    搬运于2025-08-24 22:31:06,当前版本为作者最后更新于2021-05-04 00:23:21,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题目传送门

    这题我在比赛中推了30min才推出来结果发现是原题。。。

    菜是原罪

    先证一下n是4的倍数:

    设这nn个整数分别为a1,a2...ana_1,a_2...a_n,则a1×a2×...×an=na_1\times a_2\times ...\times a_n=na1+a2+...+an=0a_1+a_2+...+a_n=0

    1.数列中有00个偶数:

    nnnn个奇数之积,故也为奇数

    所以a1+a2+...+ana_1+a_2+...+a_n为奇数个奇数之和,必为奇数

    a1+a2+...+an=0a_1+a_2+...+a_n=0矛盾

    2.数列中有11个偶数:

    nnn1n-1个奇数与11个偶数之积,故为偶数

    所以n1n-1为奇数

    所以a1+a2+...+ana_1+a_2+...+a_n为奇数个奇数之和再加一个偶数,必为奇数

    再次与a1+a2+...+an=0a_1+a_2+...+a_n=0矛盾

    3.数列中有22个偶数:

    nnn2n-2个奇数与22个偶数之积,故为偶数

    所以n2n-2为偶数

    所以a1+a2+...+ana_1+a_2+...+a_n为偶数个奇数之和再加两个偶数,必为偶数

    不与a1+a2+...+an=0a_1+a_2+...+a_n=0矛盾

    因此,此序列中至少有22个偶数,即nn能被44整除

    再来看看怎么求出数列:

    因为nn44的倍数,所以设n=4kn=4kkk为正整数)

    1.当kk为奇数时:

    n=2×(2k)×13k2×(1)kn=2\times (-2k)\times 1^{3k-2}\times (-1)^k

    验证:

    (1).和:

    22k+3k2k=02-2k+3k-2-k=0

    (2).积:

    2×(2k)×13k2×(1)k2\times (-2k)\times 1^{3k-2}\times (-1)^k

    =4k×1×1=-4k\times 1\times -1

    =4k=n=4k=n

    2.当kk为偶数时:

    n=(2)×(2k)×13k×(1)k2n=(-2)\times (-2k)\times 1^{3k}\times (-1)^{k-2}

    验证:

    (1).和:

    22k+3kk+2=0-2-2k+3k-k+2=0

    (2).积:

    (2)×(2k)×13k×(1)k2(-2)\times (-2k)\times 1^{3k}\times (-1)^{k-2}

    =4k×1×1=4k\times 1\times 1

    =4k=n=4k=n

    代码:

    #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!
    
    • 1

    信息

    ID
    6632
    时间
    500ms
    内存
    128MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者