Good Bye 2022: 2023 is NEAR C Koxia and Number Theory

news2024/11/15 21:34:59

Problem - C - Codeforces

题意:

给定一个数列a,问你是否存在一个数 x 使得所有数加上x之后两两互质

思路:

一、

我们知道一个结论,一些数两两之间互质,就说明所有数之间的质因子都不重合

如果要我们去判断一堆数之间是不是两两互质,就去给每个数都去分解质因数,然后把质因数放进map里,看存不存在某个质因数使得 mp[p]>=2,如果存在就说明没有两两互质

所以问题就转化为:是否存在 x ,使得所有数加上 x 之后,彼此之间质因数没有重合

二、

我们需要明白这样一件事情,对于一个数 a ,我们把它分解质因数为

然后我们把a加上x,会发生什么

对于a的一个质因子pk:(下图中一个小格子代表pk长度,因为能整除pk,所以可以画成这样,黄色部分就代表 a)

 

 

加上 x 之后:(其中新加的黄色部分就是 x)

 这样的话,a就不再有质因子pk,因为加上 x 之后模pk不再为0

三、

知道了一的结论和二的感性理解后,我们再去看题目:

我们是否能构造出 x ,使得所有数加 x 之后没有重合的质因子

首先,如果数列中存在一样的数就是NO,因为这样一定不存在 x 使得 gcd(ai+x,ai+x)=1

这个gcd一定等于 ai+x 嘛

我们去枚举质因子

对于一个质因子pi,如果在加x之前的数列中,存在两个数 ai , aj,使得 ai%pi==aj%pi

比如

ai :

 

aj:

 

那么我们取 x = pi - ai%pi ,这样加了 x 之后,ai 和 aj 会有同一个质因子 p

(下图中绿色部分就是 x ,因为加了 x 之后模 pi 都为 0,因此 ai+x 和 aj+x 含有同一个质因子 pi)

ai+x:

 aj+x:

 那我们要避免 ai+x 和 aj+x 有同一个质因子的情况发生,就不能取 x = pi - ai%pi

这样只是在数列 a 中拿出了两个数 ai 和 aj 而已,对于数列 a 中的数 ai,x 都不能等于pi - ai%pi

而 pi - ai%pi 的取值在 [0,p-1]之间,也就是说它只有 p 种取值,因此如果说这 p 种取值都被取到了且每种取值都出现了两次及以上,就说明 x 就没得选了,因为这样的话无论 x 取什么值,总存在两个数 ai 和 aj ,使得 ai+x 和 aj+x 有相同质因子 pi

所以做法就是:我们去枚举质因子 pk ,对于每一个质因子 pk ,都去统计 ai % pk 的出现次数,如果所有的 ai% pk 的出现次数全都 >=2,x 就没得选了,否则就取 ai % pk 的出现次数<=1 的 pk ,然后令 x= pk - ai%pk 就行

Code:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mxn=1e2+10;
int n;
int a[mxn];
void solve(){
	cin>>n;
	map<int,int> mp2;
	for(int i=1;i<=n;i++) cin>>a[i],mp2[a[i]]++;
	for(int i=1;i<=n;i++){
		if(mp2[a[i]]>1){
			cout<<"NO"<<'\n';
			return;
		}
	}
	for(int p=2;p<=n;p++){
		map<int,int> mp;
		for(int i=1;i<=n;i++) mp[a[i]%p]++;
		int cnt=0;
		for(auto it:mp){
			if(it.second>=2) cnt++;
		}
		if(cnt==p){
			cout<<"NO"<<'\n';
			return;
		}
	}
	cout<<"YES"<<'\n';
}
signed main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int __=1;cin>>__;
	while(__--)solve();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/130783.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

回顾与展望Zebec举办的“Web3.0 TechHive Summit 2022 大会”

随着流支付生态 Zebec 不断的实现商业进展&#xff0c;我们看到&#xff0c;其生态从Solana陆续的迁移到以BNB Chain为代表的EVM链上&#xff0c;并推出了以ZK-Rollup为主要技术手段的公链Zebec Chain&#xff0c;以在未来服务且满足于Web2、Web3世界的发展需求。 Zebec正在成…

若依框架:前端项目结构与初始页面渲染流程

目录 main.js入口文件 前端页面初始化 package.json配置文件 vue-cli&#xff1a;.env模式和环境变量配置 vue-cli三大核心构件 CLI 服务与npm scripts vue-cli-service命令与.env模式配置文件 .env模式和环境变量配置 vue.config.js&#xff1a;项目启动-自动打开默认…

pycharm如何设置python文件模板

pycharm如何设置python文件模板设置文件模板预定义变量设置自定义模板变量设置文件模板 打开设置界面 进入编辑器->文件和代码模板 此处我只写了文件头注释模板&#xff0c;也可以加一些默认代码&#xff0c;比如&#xff1a; python if __name__ "__main__":…

NC65在单据添加按钮跳转到固定单据,且进行数据初始化

实现功能 下面两个是按钮 下面红框里面的内容是上面单据带过来的 上面就是本地代码实现的功能 具体实现代码 提前约定 为了方便称呼&#xff0c;这里把第一张图称为上游单据&#xff0c;第二张图为下游单据 所有代码AggVo都要替换成你自己的 配置文件 上游单据拓展配置文…

2023年天津美术学院专升本专业课线上考试安排准备及设备操作说明

天津美术学院2023年高职升本招生专业考试考生须知及操作说明一、考试时间安排二、考前准备 (一)纸张及其他材料(二)考试设备及网络 1.考生须提前准备好至少两部智能手机&#xff0c;为确保网络考试顺利进行&#xff0c;建议考生使用最近3年上市的主流品牌手机&#xff08;如iPh…

太强了!这么设计中间件完美解决了百万并发的问题!

V-xin&#xff1a;ruyuan0330 获得600页原创精品文章汇总PDF 目录 一、大部分人对Java并发仍停留在理论阶段二、中间件系统的内核机制&#xff1a;双缓冲机制三、百万并发的技术挑战四、内存数据写入的锁机制以及串行化问题五、片机制 分段加锁机制 六、缓冲区写满时的双缓冲…

c++ - 第19节 - c++11

1.C11简介 c11简介&#xff1a;在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1)&#xff0c;使得C03这个名字已经取代了C98称为C11之前的最新C标准名称。不过由于C03(TC1)主要是对C98标准中的漏洞进行修复&#xff0c;语言的核心部分则没有改动&#xff0c;因此人们习惯…

Pycharm打开Project(工程)时停留在preparing workspace时间过长,导致打开很慢的解决方法...

Pycharm打开Project(工程)时停留在preparing workspace时间过长,导致打开很慢的解决方法… 昊虹君用Pycharm进行Python的开发&#xff0c;一直用得好好的&#xff0c;也没作过什么异常操作&#xff0c;但是从上星期开始&#xff0c;打开Project(工程)时停留在preparing worksp…

【王道操作系统】2.1.1 进程的定义、特征、组成、组织

进程的定义、特征、组成、组织 文章目录进程的定义、特征、组成、组织1.进程的定义2.进程的特征3.进程的组成4.进程的组织1.进程的定义 程序的概念&#xff1a; 进程的概念&#xff1a; 进程和程序的区别和联系&#xff1a; 区别&#xff1a; 进程是动态的&#xff0c;程序是静…

Linux系统下crond任务调度指令的常见用法

Linux系统下crond任务调度指令的常见用法 任务调度 任务调度是指系统在某个时间执行的特定的命令或程序。任务调度分类:1)系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等;2)个别用户工作:个别用户可能希望执行某些程序&#xff0c;比如对mysql数据库的备份。 基本语…

【攻防世界】网鼎杯2018 Web fakebook

学web总是能让我学到新的知识&#xff0c;很开心&#xff0c;很有趣&#xff0c;很好玩 打开题目 一个登录按钮&#xff0c;一个注册按钮&#xff0c;其余没有什么发现&#xff0c;对于web来说&#xff0c;常规先测试一下robots.txt文件 果然又发现&#xff0c;有一个bak文件…

opencv-python常用函数解析及参数介绍(二)——图像填充与图像融合

1.图像填充 函数及参数介绍 在opencv中使用cv2.copyMakeBorder可以进行图像的边界填充&#xff0c;需要的参数为(img, top_size, bottom_size, left_size, right_size, borderType&#xff09;&#xff0c;即&#xff08;图片&#xff0c;上侧填充值&#xff0c;下侧填充值&a…

【数据结构与算法】KMP算法

文章目录前言一 .KMP的来历二.KMP解决的问题1.引入2.定义的引入1.字符串前缀2.字符串后缀3.最长相等前后缀3.核心思想三.next/prefix1.next的含义定义规律2.next的求取1.准备工作2.思路和图解4.应用前言 在C语言的strcmp的实现过程中&#xff0c;所涉及的算法较为简单&#xff…

Golang - 字符串操作汇总

Golang 字符串操作汇总1 string初始化2 遍历string3 byte & Rune3.1 初始化3.2 byte和rune区别1 string初始化 func newString() {//1. 字符串初始化// 方式一&#xff1a;使用简写声明&#xff0c;带有字符串的变量,支持特殊字符str : "one hello \n world"fmt…

三个月后,快手To B怎么样了?

未来&#xff0c;如何独立作战和走出快手的TOC“客户资源圈”&#xff0c;或将成为快手TOB新的十字路口。 作者|斗斗 编辑|皮爷 出品|产业家 人口红利终结&#xff0c;流量红利终结&#xff0c;超常规的高速增长终结。TOC模式的路越来越难走了。 快手与抖音作为短视频…

光耦特性以及计算

光耦特性 光耦器件电路图 这是我们常用的。光耦器件以及它的连接方式。 左侧R1是我们主要考虑的。 电流最小值是要让LED能够保持发光状态&#xff0c;最大值的话。1.不能让LED烧坏了。2. LED的负极端是单片机的。 这里主要是看引脚灌入电流的最大值。 电气规格 我们看看说…

手机数据包抓包详解

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是手机数据包抓包详解。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对未授权设…

并发编程——6.共享模型之不可变

目录6.共享模型之不可变6.1.日期转换的问题6.1.1.问题提出6.1.2.解决思路——同步锁6.1.3.解决思路——不可变6.2.不可变设计6.3.享元模式6.3.1.简介6.3.2.体现6.3.3.DIY6.4.final 原理6.5.无状态本文笔记整理来自黑马视频https://www.bilibili.com/video/BV16J411h7Rd/?p197&…

Unity脚本(二)

视频教程&#xff1a;https://www.bilibili.com/video/BV12s411g7gU/?share_sourcecopy_web Transform 对象的位置、旋转和缩放 场景中的每个对象都有一个Transform&#xff0c;用于存储和操作对象的位置、旋转和缩放。 每个Transform都可以有一个父级&#xff0c;能够分…

C语言强制类型转换

强制类型转换是把变量从一种类型转换为另一种数据类型。例如&#xff0c;如果您想存储一个 long 类型的值到一个简单的整型中&#xff0c;您需要把 long 类型强制转换为 int 类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型&#xff0c;如下所示&am…