cf 959D Mahmoud and Ehab and another array construction task

baostock实战:如何用Python批量下载多只股票的历史数据(含常见错误排查) 本文详细介绍了如何使用Python和baostock库批量下载多只股票的历史数据。内容涵盖从环境搭建、代码标准化到构建稳健的批量下载框架的全过程,并重点提供了高级错误处理、网络重试、数据验证及内存管理等实战解决方案,帮助用户高效构建股票数据处理流水线。 阅读详情

一 原题

D. Mahmoud and Ehab and another array construction task
time limit per test
3 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Mahmoud has an array a consisting of n integers. He asked Ehab to find another array b of the same lengthsuch that:

  • b is lexicographically greater than or equal to a.
  • bi ≥ 2.
  • b is pairwise coprime: for every 1 ≤ i < j ≤ n, bi and bj are coprime, i. e. GCD(bi, bj) = 1, where GCD(w, z) is the greatest common divisor of w and z.

Ehab wants to choose a special array so he wants the lexicographically minimal array between all the variants. Can you find it?

An array x is lexicographically greater than an array y if there exists an index i such than xi > yi and xj = yj for all 1 ≤ j < i. An array x is equal to an array y if xi = yi for all 1 ≤ i ≤ n.

Input

The first line contains an integer n (1 ≤ n ≤ 105), the number of elements in a and b.

The second line contains n integers a1, a2, ..., an (2 ≤ ai ≤ 105), the elements of a.

Output

Output n space-separated integers, the i-th of them representing bi.

Examples
input
Copy
5
2 3 5 4 13
output
Copy
2 3 5 7 11 
input
Copy
3
10 3 7
output
Copy
10 3 7 
Note

Note that in the second sample, the array is already pairwise coprime so we printed it.


二 分析

给定一个长度为n的数组a(n<=10^5,ai<=10^5)要求你给出一个新的等长数组b,b的字典序要不小于a,且b中的元素两两互素,输出所有可行的b中字典序最小的一个。

要输出的b字典序最小,我们从前往后贪心地去填数字。为了满足两两互素的条件,维护一个素数表v[maxp],如果素数p已经是先前某个b中元素的素因子,v[p]设置为true。注意,bi的上界题目中并没有规定,但前10^5个素数组成的数组一定是一个合法解,根据素数约占前n个数的1/ln(n),我在实现时把bi的上界定位了1e7.

假设我们已经搞定了b中前k-1个数,如果b的前k-1个数和a都相同,那么bk就要大于等于ak,我们从ak开始枚举可行解,每次验证的代价是一次质因数分解;如果b的前k-1个数中有大于a的,那么bk设置为当前为使用过的最小素数就行了。


三 代码

#include <cstdio>

const int maxn = 1e7 + 5;

int n, a[maxn], d[maxn];
bool v[maxn];

void prepare() {
	for (int i = 2; i < maxn; i++) {
		if (d[i] != 0) continue;
		for (int j = i; j < maxn; j += i) d[j] = i;
	}
}

int main() {
	prepare();
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
		scanf("%d", &a[i]);
	int idx = 0, x;
	while (idx < n) {
		bool ok = true;
		x = a[idx];
		while (x != 1) {
			if (v[d[x]]) { ok = false; break; }
			x /= d[x];
		}
		if (ok) {
			x = a[idx];
			while (x != 1) {
				v[d[x]] = true;
				x /= d[x];
			}
			idx++;
			continue;
		}
		while (!ok) {
			ok = true;
			x = ++a[idx];
			while (x != 1) {
				if (v[d[x]]) { ok = false; break; }
				x /= d[x];
			}
		}
		x = a[idx];
		while (x != 1) {
			v[d[x]] = true;
			x /= d[x];
		}
		idx++;
		break;
	}
	
	int p = 2;
	while (idx < n) {
		for (;; p++) {
			if (d[p] != p || v[p]) continue;
			a[idx++] = p;
			p++; break;
		}
	}
	
	for (int i = 0; i < n; i++) printf("%d ", a[i]);

	return 0;
}

【maven】maven 3.8.1 版本编译java 17的项目报错 java.lang.ExceptionInitializerError to make field private com.s 排查发现一切正常,但是内网就是不行,然后我就想把我的程序从java 11 改成java 17,然后执行编译的时候报错。这个问题是我们内网java代码升级,项目比较复杂,是从java 8 升级到java 17,然后报错。maven-compiler-plugin 3.8.1 版本编译java 17的项目,报错。然后查看一下这个项目的lombok,结果发现还是老的版本。怀疑是不是这个问题呢?使用最新的版本就可以了。 阅读详情

相关推荐

模电专题-MOS管的放大电路分析

在实际应用中,我们经常会使用到功率MOS,这时通常不会将它当成一个开关使用,而是当成一个放大器来使用,那这就需要让其工作在放大状态。参考下图中的mos管的特性曲线,右图中的输出特性曲线中有一根红色的分界线,这个线就是区分mos管工作状态的分界线,在红线的左边,mos管工作在可变电阻区,也就是线性区;在红线的右边mos管工作在恒流区,也就是饱和区。当然,还有一个截止区。本文分析主要运用模电课本中的理论计算验证。

Anitawen的博客 2万+

cf Mahmoud and Ehab and another array construction task(素数处理大乱炖)

做惯了素数分解,其实直接因数分解,复杂度也是根号的,这非常有用. 筛是线性的,这也非常重要. 给出一段数,让你给出一个字典序大于他的最小数列.这种最小的大于..不是特别的东西. 每一个数放进来,素因数分解,如果和之前数没有重合,那么把他的新素因数都过一遍. 如果有了重合,那么就不行了. 这题说不出什么,感觉就是筛法的重现.搞不太清楚. #include &lt;iostream&gt;...

blog 307

Trae IDE与Playwright MCP:5分钟实现零代码网页数据抓取

网页数据抓取是数据采集和自动化处理中的基础技术,其核心原理是通过程序模拟浏览器行为,定位并提取页面中的结构化信息。传统方式依赖编写脚本处理网络请求、解析HTML和应对反爬机制,技术门槛较高。而结合AI与自动化工具的新范式,通过自然语言交互即可完成复杂操作,极大降低了技术门槛并提升了开发效率。这种技术价值在于将开发者从繁琐的编码中解放,使其更专注于数据分析和业务逻辑。在数据监控、市场调研、竞品分析等应用场景中,快速获取网页数据是关键需求。本文以Trae IDE集成Playwright MCP为例,演示如何通过

culi3118的博客 498

codeforces 959 D. Mahmoud and Ehab and another array construction task

题目链接 陈瑜推荐的好题。 就是给你一个数字串,让你找到一个字典序最小的串,满足这串中的数组两两互质,并且字典序不小于原串。 #include<bits/stdc++.h> #define mem(a,b) memset((a),b,sizeof(a)) #define de cout<<endl<<endl<<endl typedef lo...

flyzer的博客 246

【实战】ESP32 + LN298N 实现电动推杆的闭环位置伺服控制

本文详细介绍了如何使用ESP32微控制器和LN298N电机驱动模块,为普通电动推杆增加编码器反馈,实现精准的闭环位置伺服控制。文章从硬件选型与接线讲起,深入解析了编码器四倍频计数原理与位置换算,并重点阐述了PID控制算法的核心思想、代码实现及参数整定方法,旨在帮助读者从零构建一个反应迅速、定位精准的智能执行器系统。

weixin_29195615的博客 318

Kettle实战:如何用JavaScript脚本实现数据库表批量操作(附完整代码)

本文详细介绍了如何利用Kettle的JavaScript脚本实现数据库表批量操作,包括表名采集、循环遍历和动态SQL生成等关键步骤。通过实战案例和完整代码示例,帮助ETL工程师高效处理数据密集型任务,提升数据库操作的自动化水平。

weixin_29019241的博客 231

Codeforces Round #473 (Div. 2) ABCDE

A. Mahmoud and Ehab and the even-odd gametime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputMahmoud and Ehab play a game called the even-odd game. Eha...

J. Cole 895

GD32F105RBT6 keil工程模板

创建GD32F105RBT6的keil初始基础工程,未来的所有外设驱动都是基于这个基础工程进行扩展。

RMDYBW的博客 1926

Codeforces 959-D Mahmoud and Ehab and another array construction task (贪心思想)

Problem Description Mahmoud has an array a consisting of n integers. He asked Ehab to find another array b of the same length such that: b is lexicographically greater than or equal to a. b...

wcxyky的博客 268

基于YOLOv10深度学习的花生种子霉变检测系统

YOLO(You Only Look Once)是当前最先进的目标检测算法之一,具有快速、精准的特性。YOLOv10是YOLO系列的最新版本,相较于之前的版本,YOLOv10在特征提取、模型精度和速度上都有了显著的提升。YOLOv10采用了更深的卷积神经网络、更多的跨层特征融合方法,使得其在不同尺寸物体的检测和复杂场景的处理上都表现出了优异的性能。YOLOv10特别适合应用在需要快速处理并检测大量图像的任务中,如花生种子霉变检测等,能够实现精准、高效的检测。

2201_76125393的博客 648

ROS从入门到精通2-7:Gazebo仿真之动态生成障碍物

动态生成障碍物在机器人导航、碰撞避障算法测试、多机协同等领域应用广泛,可以帮助开发人员快速测试,本文介绍该技术并提供基于ROS Gazebo的实现

FRIGIDWINTER的博客 4898

Codeforces-959D Mahmoud and Ehab and another array construction task(贪心)

题意: 给定数组a,求大于或者等于数组a字典序的数组b,满足任意i,j,gcd(bi, bj) = 1。并且是在所有满足条件中的字典序最小的一个。 思路: 任意一对数互质,可以通过标记其质因子来解决,在找到第一个违背互质的数时,只需要找出大于该数的最小的一个与前面所有数互质的数,在此之后,要想保证字典序最小,便是所有可用的质数从小向大取。 代码: #include using name

yo_bc的博客 663

Unity 横版游戏开发天花板?状态机、联机同步与横版动作游戏架构全都有

在 Unity 横版动作游戏开发领域,最耗时间的往往不是角色移动,而是整套“可扩展架构”的搭建。包括角色状态管理、敌人 AI、武器系统、关卡编辑器、联机同步、输入适配、UI 与存档系统等。2D Action Platformer Kit 的核心价值,并不只是“提供素材”,而是它已经帮开发者搭好了一整套适用于横版动作游戏的底层框架。

2403_88403568的博客 424

CF959D Mahmoud and Ehab and another array construction task [乱搞]

D. Mahmoud and Ehab and another array construction task time limit per test3 seconds memory limit per test256 megabytes inputstandard input outputstandard output Mahmoud has an array a consisting of n...

MekakuCityActors的博客 474

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

CF959D Mahmoud and Ehab and another array construction task 数学

Mahmoud has an array a consisting of n integers. He asked Ehab to find another array b of the same length such that: b is lexicographically greater than or equal to a. bi ≥ 2. b is pairw...

loooooog的博客 198

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

[CF959D]Mahmoud and Ehab and another array construction task题解

解法 非常暴力的模拟。 一开始吧\(1 -> 2 \times 10^6\)全部扔进一个set里,如果之前取得数都是与原数组相同的,那么lower_bound一下找到set中大于等于它的数,否则直接取set中最小的数,然后枚举该数的所有质因数及其倍数,类似埃拉托斯特尼筛法删掉它们(如果它们在集合中的话)。 P.S. 不要用STL algorithm的lower_bound,极慢,用STL内部...

weixin_30613433的博客 171

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

959D--Mahmoud and Ehab and another array construction task

题目 Mahmoud has an array a consisting of n integers. He asked Ehab to find another array b of the same length such that: b is lexicographically greater than or equal to a. bi ≥ 2. b is pairwise coprime...

树莓一只猪 311

Codeforces 959D D. Mahmoud and Ehab and another array construction task

一个老学长让我做的一个好题,刚开始题意没读对,想了好长时间,没想法,后来由一个女生给我讲了一下,我才有了想法, 虽然T了N遍,总算过了,下面给大家分享一下。D. Mahmoud and Ehab and another array construction tasktime limit per test3 secondsmemory limit per test256 megabytesinput...

Amo丶 450

CF473 DIV2 D. Mahmoud and Ehab and another array construction task

本题基于一种贪心的思路,即:能不改就不改,但是一旦改了以后,后面的都改;具体而言,就是从前往后扫,如果当前位置的数不与前面的数冲突的话,那么我们就不改动他。但是,一旦有一个数冲突了,根据题意我们肯定要换一个更大的数,那么此时整个序列肯定就比原序列大了,那么后面的数我们肯定都要换尽可能小的。 同时,还要考虑的一个问题是,如何保证后面选的数不与前面已经选过的数冲突。方法非常暴力:我们预处理出每个数的...

HumveeA6的博客 475

Codeforces Round #435 (Div. 2) E. Mahmoud and Ehab and the function

传送门 E. Mahmoud and Ehab and the function time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Dr. Evil is i

twh233的算法blog 759

CodeForce 959F Mahmoud and Ehab and yet another xor task(思维+离线处理)

大致题意:给你n个数字和q个询问。每个询问为l、x,意思是在前l个数字中取一个子集,求子集的异或和为x的子集个数。 通常想法:dp。令dp[i][j]表示前i个数字的子集异或和为j的个数,有转移方程dp[i][j]=dp[i-1][j]+dp[i-1][j^a[i]]。分别代表a[i]取与不取。时空复杂度O(N*2^K),K表示数字二进制最高位。显然,对于N为1e5,K为20的数据范围来说,时空上都不满足我们的要求。 仔细的观察可以发现,dp中其实很多的枚举与转移都是浪费的

alpc_qleonardo 648

洛谷P4016

题目标签写着网络流诶….那么问题就是如何建图了…看到题解里一波大神用平均值来计算…但是蒟蒻没想到诶…所有我就比较暴力了…. 对于每个点一拆为二(ia,ib),建立超源超汇,然后对于每个点,从源点s向其连一条容量为c[i],费用为0的边,从ia向ib连一条容量为无限,费用为0 的边(因为可以不停的把别的地方的货物搬到ia,然后从ib搬到下一个点去,ia到ib搬运当然是不用钱的),然后从ib向汇点t...

HumveeA6的博客 367

Codeforces-959D Mahmoud and Ehab and another array construction task 素数筛+质因数分解

题意:    给一个数组a,求大于或者等于数组a的字典序的数组b,其中b满足数组内任意数互质,bi&gt;=2。并且是所有满足条件中的字典序最小的一个。题解:         这道构造题首先要考虑的就是如果a数组内的数互质的话,就不需要构造出b数组,直接输出a数组就可以了。那么我们怎么判断整个数组内的数是否互质呢?不能单单的左右判断就完事(意思就是假如,2,3,4判断是否互质,2和3不互质,3和4...

Start_to_crazy的博客 359

Codeforces-959D Mahmoud and Ehab and another array construction task(数论,质因子分解)

D. Mahmoud and Ehab and another array construction tasktime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputMahmoud has an array a consisting of n inte...

sher杨的博客 384

D. Mahmoud and Ehab and another array construction task(因子标记)

D. Mahmoud and Ehab and another array construction tasktime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputMahmoud has an array a consisting of n inte...

SunMoonVocano的博客 419

Divide by Zero 2018 and Codeforces Round #474 (Div. 1 + Div. 2, combined) C. Subsequence Counting

题目链接:http://codeforces.com/contest/960/problem/C 题意:给你两个整数X,d, 找出一个数组满足以下条件: 除去Maximum_element_of_the_subsequence  -  Minimum_element_of_subsequence  ≥ d 的子序列后还剩x个子序列 算法:暴力 思路:把数组元素个数对应的子序列个数列出,会发现:...

凝望的博客 327
上一篇: cf 982D Shark
下一篇: cf 985E Pencils and Boxes
max_kibble
博客等级 码龄11年 2粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值