当前位置: 首页 > news >正文

「MCOI-05」魔仙

题意

给定一个 \(n\), 构造长度为 \(n\) 的序列,使得和为 0,乘积为 \(n\)

解答

我们考虑 \(n\) 的性质,发现 \(0\) 是一个偶数,如果序列中没有偶数,作为一对奇数乘积的 \(n\) 自然也会是奇数,奇数个奇数整不出来偶数。

所以肯定是有偶数的。

抓着这一点下手,我们继续分析。

如果只有一个偶数,我们的乘积自然成了一个偶数,然而偶数和奇数个奇数同样整不出来偶数。

所以我们有了结论,至少有两个偶数。

也就是 \(n=4k\)

我们根据 \(k\) 的奇偶性分类讨论。

\(k\) 是奇数 \(2*\frac{n}{-1}*(-1)^k*1^{3k-2}\)

\(k\) 是偶数 \((-2)*\frac{n}{-1}*1^{3k}*(-1)^{k-2}\)

这个样子我们就完成了我们的构造了

code↓

#include <bits/stdc++.h>
using namespace std;
int T, n;
int main(){ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cin>>T; while(T--){cin>>n;if(n%4){cout<<"w33zAKIOI\n";continue;}int k=n/4;if(k%2==1){cout<<2<<" "<<n/-2<<" ";for(int i=1; i<=k; ++i) cout<<-1<<" ";for(int i=1; i<=k*3-2; ++i) cout<<1<<" ";cout<<'\n';}else{cout<<-2<<" "<<n/(-2)<<" ";for(int i=1; i<=3*k; ++i) cout<<1<<" ";for(int i=1; i<=k-2; ++i) cout<<-1<<" ";}}return 0;
}
http://www.rkmt.cn/news/8987.html

相关文章:

  • BlueHat v18 会议资料现已发布:前沿安全技术与漏洞缓解策略
  • label和brand的区别(品牌=brand?错了,你们的英语都学错了!)
  • 读书笔记:更智能的数据库索引:只关注你需要的数据
  • 关于天猫精灵喵控的初步拆机研究
  • C++完全攻略:从新手到高手的编程进化之路 - 详解
  • Visual Studio 报错:“9_自定义命令”名称在默认命名空间“9_自定义命令”中无效。请更正项目文件中的 RootNamespace 标记值。
  • 图解23:datetime和timestamp的区别
  • 在Java中识别泛型信息
  • Kali Linux 光标与快捷键全攻略
  • Docker - ZZH Ubuntu Image - Desktop
  • 图解17:5中网络IO模型
  • 【session反序列化】 - 指南
  • 在k8s集群中解决master节点与node通信
  • PHP中常见数组操作函数
  • 修复Ubuntu系统文件损坏:手动fsck指令
  • window表现驱动开发—视频呈现网络简介
  • 一类特征方程在数列递推中的应用
  • 深入解析:GC 算法的种类及垃圾收集器
  • rust跨文件调用代码
  • 深入解析:深度学习从入门到精通 - AutoML与神经网络搜索(NAS):自动化模型设计未来
  • 个人项目-文本查重
  • 深入解析:[数据结构] LinkedList
  • 数字图像基础知识
  • 设置Redis在CentOS7上的自启动配置
  • 挂载配置文件以Docker启动Redis服务
  • ​​Final Cut Pro 11.0 for Mac 剪视频安装教程|DMG文件安装步骤详解​(附安装包)
  • 实用指南:物联网赋能24H共享书屋:智能化借阅管理的完整解决方案!
  • 准备工作之动态内存分配[基于郝斌课程]
  • 2025.6第一套六级听力生词
  • CSP-S 2025游记