AtCoder Regular Contest 148 A - mod M
题面
You are given a sequence \(A = (A_1, A_2, ..., A_N)\).
You may perform the following operation exactly once.
Choose an integer \(M\) at least \(2\). Then, for every integer \(i\) (\(1 \leq i \leq N\)), replace \(A_i\) with the remainder when \(A_i\) is divided by \(M\).
For instance, if \(M = 4\) is chosen when \(A = (2, 7, 4)\), \(A\) becomes \((2 \bmod 4, 7 \bmod 4, 4 \bmod 4) = (2, 3, 0)\).
Find the minimum possible number of different elements in \(A\) after the operation.
Constraints
- \(2 \leq N \leq 2 \times 10^5\)
- \(0 \leq A_i \leq 10^9\)
- All values in the input are integers.
简要题意
给出一个长度为 \(N\) 的序列 \(A\),你需要找到一个整数 \(M(M \geq 2)\),使得所有 \(A_i \bmod m\) 的值种数最小,输出种数。
如 \(A=[1,4,8]\),则可以取 \(M=2\),\(A_1 \bmod M=1,A_2 \bmod M=0,A_3 \bmod M=0\),共 \(2\) 种,这是最优的。
\(2 \leq N \leq 2 \times 10^5,0 \leq A_i \leq 10^9\)
思路
这道题答案只可能是 \(1\) 或 \(2\)。因为如果答案大于 \(2\),我们可以取 \(M=2\) 这样种数最多是 \(2\)。
先排序。
不难发现,答案为 \(1\) 则代表存在 \(M\),使得 \(A_1 \equiv A_2 \equiv \cdots \equiv A_{n-1} \equiv A_n \pmod{M}\),根据同余定义可知 \(A_2-A_1 \mid A_3-A_2 \mid \cdots A_{n-1}-A_{n-2} \mid A_n-A_{n-1}\), 可以推出 \(\gcd\limits_{i=2}^{n}{(A_i-A_{i-1})}=m\)。
所以如果 \(\gcd\limits_{i=2}^{n}{(A_i-A_{i-1})} \gt 1\),答案是 \(1\),否则是 \(2\)。
代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n;
int a[1000005];
int rrr;
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
rrr=a[2]-a[1];
for(int i=3;i<=n;i++){
rrr=__gcd(rrr,a[i]-a[i-1]);
}
if(rrr!=1){
cout<<1;
}
else{
cout<<2;
}
return 0;
}
AtCoder Regular Contest 148 A - mod M的更多相关文章
- AtCoder Regular Contest 096
AtCoder Regular Contest 096 C - Many Medians 题意: 有A,B两种匹萨和三种购买方案,买一个A,买一个B,买半个A和半个B,花费分别为a,b,c. 求买X个 ...
- Atcoder regular Contest 073(C - Sentou)
Atcoder regular Contest 073(C - Sentou) 传送门 每个人对开关的影响区间为a[i]--a[i]+t,因此此题即为将所有区间离散化后求所有独立区间的长度和 #inc ...
- Atcoder regular Contest 073(D - Simple Knapsack)
Atcoder regular Contest 073(D - Simple Knapsack) 传送门 因为 w1≤wi≤w1+3 这个特殊条件,我们可以将每个重量离散化一下,同时多开一维记录选择的 ...
- AtCoder Beginner Contest 148 题解
目录 AtCoder Beginner Contest 148 题解 前言 A - Round One 题意 做法 程序 B - Strings with the Same Length 题意 做法 ...
- AtCoder Regular Contest 061
AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...
- AtCoder Regular Contest 094 (ARC094) CDE题解
原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...
- AtCoder Regular Contest 092
AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...
- AtCoder Regular Contest 093
AtCoder Regular Contest 093 C - Traveling Plan 题意: 给定n个点,求出删去i号点时,按顺序从起点到一号点走到n号点最后回到起点所走的路程是多少. \(n ...
- AtCoder Regular Contest 094
AtCoder Regular Contest 094 C - Same Integers 题意: 给定\(a,b,c\)三个数,可以进行两个操作:1.把一个数+2:2.把任意两个数+1.求最少需要几 ...
- AtCoder Regular Contest 095
AtCoder Regular Contest 095 C - Many Medians 题意: 给出n个数,求出去掉第i个数之后所有数的中位数,保证n是偶数. \(n\le 200000\) 分析: ...
随机推荐
- Vue学习之--------深入理解Vuex之多组件共享数据(2022/9/4)
在上篇文章的基础上:Vue学习之--------深入理解Vuex之getters.mapState.mapGetters 1.在state中新增用户数组 2.新增Person.vue组件 提示:这里使 ...
- 齐博x1模型里边钩子的创建与使用
在模型里边的钩子创建与使用方法跟在控制器里边的钩子创建及使用方法是有所区别的在模型里边创建的钩子,你可以理解为执行一个函数,是无法调用模型里边的类的方法及属性的.比如系统文件\application\ ...
- Ubuntu实现电商网站+Mysql主从复制+NFS
Ubuntu实现电商网站+Mysql主从复制+NFS 1.环境准备 提前准备:Mysql8.0.30安装包.Mysql安装脚本.shopxo2.3.0安装包.DNS脚本 服务器 IP地址 作用 系统版 ...
- vue-axios删除操作
<template> <div class="nav"> <input v-model="location" type=" ...
- 禁止eslint对指定代码检测
有时候我们引入外部文件的API时,eslint无法识别,编译的时候就会出现warn eslint是可以禁用对指定代码的检测: 单行注释 let map = new BMap.Map('map') // ...
- Windows骚操作
电脑常用的快捷键 键盘功能健:Tab.Shift.Ctrl.Alt.Windows.Enter.空格.上下左右健.CapsLock(大小写转换).NumLock(对小键盘控制开/关) 键盘快捷键:全选 ...
- Codeforces Round #786 (Div. 3) 补题记录
小结: A,B,F 切,C 没写 1ll 对照样例才发现,E,G 对照样例过,D 对照样例+看了其他人代码(主要急于看后面的题,能调出来的但偷懒了. CF1674A Number Transforma ...
- SQLSever事务
1. 为什么要使用事务? 当一个存储过程或多个SQL语句(指代insert.update.delete类型)依次执行时候, 如果其中一条或几条发生错误,但是其他的还会继续执行,会造成数据的不一致,非常 ...
- ROSIntegration ROSIntegrationVision与虚幻引擎4(Unreal Engine 4)的配置
ROSIntegration ROSIntegrationVision与虚幻引擎4(Unreal Engine 4)的配置 操作系统:Ubuntu 18.04 虚幻引擎:4.26.2 目录 ROSIn ...
- linux ip命令
ip link show # 显示网络接口信息 ip link set eth0 up # 开启网卡 ip link set eth0 down # 关闭网卡 ip link set eth0 pro ...