Title

杂题题解 1

有解条件

先来证明当且仅当 n=4×k,kZ 的时候有解。

【#1】 序列中有没有偶数

易得,n 为奇数,奇数个数相加和一定不为 0,该情况一定不成立,证明如下:

由序列中没有偶数知,令 a1=2×k+1 kZ,a2=2×k kZ,,an=2×k kZ,由 i=1nai=0,不妨设 a1=i=2nai,则有 2×k+1=2×(k2+k3+)+(n1),又由 2×k 为偶数,2×(k2+k3+) 为偶数可得,(n1)1 同为奇数,则 n 为偶数,与假设矛盾,故假设不成立。

【#2】 序列中只有 1 个偶数

n=i=1nai,若干个奇数相乘为奇数,奇数乘偶数为偶数可得 n 为偶数,该情况不成立,证明如下:

不妨令,a1=2×k kZ,a2=2×k kZ,,an=2×k kZ,由 i=1nai=0,不妨设 a1=i=2nai,则有 2×k=2×(k2+k3+)+(n1),显然,2×k2×(k2+k3+) 均为偶数,则 n10 同为 ,由此可得 n 为奇数,与 n 为偶数矛盾,故情况不成立。

【#3】序列中有超过一个偶数,且偶数个数为奇数

n=i=1nai,若干个奇数相乘为奇数,奇数乘偶数为偶数可得 n 为偶数,该情况成立,证明如下:

不妨令 a1,,ar 满足 ai=2×k,kZar+1,,an 满足 ai=2×k+1,kZ,不妨设 i=1rai=i=r+1nai,则有 2×(k1++kr)=2×(kr+1,,kn)+(nr)nr0 同偶,当 r=2×k+1,kZn 为奇数,不成立。

【#4】序列中有超过一个偶数且偶数个数为偶数

n=i=1nai,若干个奇数相乘为奇数,奇数乘偶数为偶数可得 n 为偶数,该情况成立,证明如下:

不妨令 a1,,ar 满足 ai=2×k,kZar+1,,an 满足 ai=2×k+1,kZ,不妨设 i=1rai=i=r+1nai,则有 2×(k1++kr)=2×(kr+1,,kn)+(nr)nr0 同偶,当 r=2×k,kZn 为偶数,不成立。

综上所述,当构造序列中有偶数个偶数,且个数大于 1 时满足题意要求,此时 nmod4=0,令 n=4×k,其中 k 可为奇数可为偶数。

构造方法

n=4×k,分两种情况构造:

  • k 为奇数:显然序列中存在两个元素 22×k,考虑剩余的元素。此时还有 4×k2 个元素,由相加为 0 可知,有 k13×k21,同时乘积满足条件。
  • k 为偶数:显然序列中存在 22×k,剩余元素为 k213×k1

AC 代码

#include<stdio.h>
int n,m;
inline void work(){
    scanf("%d",&n);
    if(n%4){
        putchar('w');
        putchar('3');
        putchar('3');
        putchar('z');
        putchar('A');
        putchar('K');
        putchar('I');
        putchar('O');
        putchar('I');
        putchar('\n');
        return;
    }m=n>>2;
    if(m&1){putchar('2');
        putchar(' ');printf("-%d ",m<<1);
        for(register int i=1;i<=3*m-2;++i)
            putchar('1'),putchar(' ');
        for(register int i=1;i<=m;++i)
            putchar('-'),putchar('1'),putchar(' ');
    }else{putchar('-'),putchar('2');
        putchar(' ');printf("-%d ",m<<1);
        for(register int i=1;i<=m+(m<<1);++i)
            putchar('1'),putchar(' ');
        for(register int i=1;i<=m-2;++i)
            putchar('-'),putchar('1'),putchar(' ');
    }putchar('\n');
}signed main(){
    int T;scanf("%d",&T);
    while(T--) work();
}
posted @   UncleSam_Died  阅读(27)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示