【TYZ 10/18】 最大公约数问题

igh ethercat 实时性测试 组备注std(us)max(us)a无锁核,无rt补丁8.38108b锁核+FIFO调度+内存锁定,无rt补丁0.9216c锁核+FIFO调度+内存锁定,+rt补丁0.9922可以看到 a组 使用ethercat不做其他优化,周期抖动非常大,且max能达到 100 多 us;通过 锁核+FIFO调度+内存锁定 进行优化,可以看到 抖动明显降低,且max 为 20 us 左右; 阅读详情

题目描述:

TL:1S  ML:256MB 
【Description】 
有N个整数,kAc会对它们做Q次修改。 
每次修改指的是对所有数加一个整数(可正可负) 
每修改一次后,他想知道当前所有数的最大公约数是多少。 
【Input】 
第一行两个整数N, Q 
接下来N行,每行一个整数,表示这N个数的初始值。 
接下来Q行,每行一个整数,表示这Q个操作。第i个数表示这一次操作是增加了多少。 
【Output】 
共Q行,表示进行完第i次操作后,所有数的最大公约数 
【Sample Input】 
3 2 
1 -5 7 
-1 
1 
【Sample Output】 
6 
1 
 
【Hint】 
对于40%:N, Q <= 1000 
对于70%:N, Q <= 40000 
对于100%:N, Q <= 100000,所有数的绝对值始终小于等于10^16 
在这里,我们认为任意非负整数x跟0的最大公约数都是x 


40%的数据就是一个暴力,注意留坑的是不能除以0

可以看出这是个o(n)的题目

这道题目时雨加减有关的

有个欧几里得定理

gcd(a,b)=gcd(a,a-b)

这个证明非常好想

毕竟是整除的

那么现在想差值

无论减去多少,差值总是不变的

•gcd(a[1], a[2]) = gcd(a[1], a[2] – a[1])
•gcd(a[2], a[3]) = gcd(a[2], a[3] – a[2])
•gcd(a[1], a[2], a[3]) = gcd(a[1], a[2] –a[1], a[3] – a[2])
•
•gcd(a[1], … , a[n]) = gcd(a[1], a[2] –a[1] … ,a[n] – a[n - 1])
这样子每次只算a1的值就可以了!

你要的O(n)

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<algorithm>
#include<cstring> 
using namespace std;
typedef long long ll;
const int maxn=100005;
ll a[maxn];
ll n,q,t1,t2;
ll gcd(ll xx,ll yy)
{
     if(yy==0)
     return xx;
     else
     return gcd(yy,xx%yy);
}
ll cgcd(ll xxx,ll yyy)
{
	if(xxx==0)
	return yyy;
	if(yyy==0)
	return xxx;
	xxx=abs(xxx),yyy=abs(yyy);
	return gcd(xxx,yyy);
}
ll calc(ll x)
{
	int cur=1;
	while((a[cur]+x)==0) cur++;
	if(cur==n+1) return 0;
	else
	{
		ll res=cgcd(a[cur]+x,a[cur+1]+x);
		for(ll i=cur+2;i<=n;i++)
		{
			res=cgcd(res,a[i]+x);
		}
		return res;
	}
}
int main()
{
	freopen("gcd.in","r",stdin);
	freopen("gcd.out","w",stdout);
	cin>>n>>q;
	for(int i=1;i<=n;i++)
	{
		scanf("%lld",&a[i]);
	}
     if(n<=1000&&q<=1000)
     {
     	ll sum=0;
     	for(int i=1;i<=q;i++)
     	{
     		scanf("%lld",&t1);
     		sum+=t1;
     		ll nw=calc(sum);
     		printf("%lld\n",nw);
		 }
   	  return 0;
	 }
	 else
	 {
	 	ll ans=cgcd(a[2]-a[1],a[3]-a[2]);
	 	for(int i=4;i<=n;i++)
	 	ans=cgcd(ans,a[i]-a[i-1]);
	 	ll sum=0;
	 	for(int i=1;i<=q;i++)
	 	{
	 		scanf("%lld",&t1);
	 		sum+=t1;
	 		ll w=cgcd(ans,a[1]+sum);
	 		printf("%lld\n",w);
		 }
		 return 0;
	  } 
}


PyMuPDF`库实现PDF旋转功能 本文介绍了一个简单的Python应用程序,用于将PDF文件转换为旋转90度的PDF文件。通过使用`wx很抱歉,Markdown格式在当前聊天界面无法显示。我将为您提供纯文本格式的博客内容,您可以将其复制到Markdown编辑器中进行格式化。PDF转换工具本文介绍了一个简单的Python应用程序,用于将PDF文件转换为旋转90度的PDF文件。该工具使用了wxPython和PyMuPDF库。功能该PDF转换工具具有以下功能:1. 选择PDF文件:通过点击“选择文件”按钮,用户可以选择要转换的PDF文件。 阅读详情

相关推荐

《AI Agent混沌测试》

在智能体时代,混沌测试正从基础设施的「物理破坏」升级为认知系统的「思维迷宫」,这是一场测试范式的深度进化。将当前时间设为2030年,使"2023年GDP数据"显示为最新。"查看北京\x0d\xa天气" → 解析为两个独立语句。将"高风险投资"权重从0.2改为0.8。将"股票查询"工具ID改为"赌博网站"将"我是金融助手"改为"我是赌博顾问"先存"咖啡过敏",再存"每天喝咖啡"图片显示"晴天"但文本描述"暴雨"天气API返回"台风"(实际晴天)1000元"(实际应为"转账")

fengruxue的专栏 1342

最大公约数与最小公倍数

最小公倍数与最大公约数

weixin_73562326的博客 696

西门子1500T系列凸轮同步(CAMIN指令用法)

添加凸轮工艺对象(TO_CAM),也就是凸轮表。开始编程,先写2个轴的使能、回原点与主轴的定位。监控主轴与从轴的位置、速度关系是否满足实验要求。1.添加工艺对象(1个定位轴,1个同步轴)调用CAMIN指令 ,凸轮耦合。主轴为旋转轴且为模数轴。3.调用插补凸轮盘指令。4.仿真、监控、调试。

gyxgyx789的博客 1万+

最大公约数

欧几里得算法求最大公约数

乘风破浪会有时 1172

MEMS惯性传感器关键参数解析与误差优化策略

本文深入解析了MEMS惯性传感器的关键性能参数,如零偏稳定性、噪声与随机游走、振动整流误差等,并阐述了这些误差如何导致设备导航漂移、姿态不稳等问题。文章重点探讨了从硬件选型、系统设计到校准补偿、算法融合(如卡尔曼滤波)以及温度补偿等实战优化策略,旨在帮助工程师有效提升自动驾驶、无人机等设备的测量精度与稳定性。

weixin_28363123的博客 414

LiveKit 本地部署实战:从零搭建安全实时通信环境(Caddy+HTTPS)

本文详细介绍了如何从零开始搭建LiveKit本地部署环境,结合Caddy服务器实现HTTPS安全通信。通过环境准备、证书生成、服务配置到前端客户端集成的完整流程,帮助开发者快速构建实时音视频应用,特别适合需要安全实时通信的场景。

weixin_29227585的博客 675

030-求最大公约数问题

030-求最大公约数问题 总时间限制: 1000ms 内存限制: 65536kB 描述 给定两个正整数,求它们的最大公约数。 输入 输入一行,包含两个正整数(<1,000,000,000)。 输出 输出一个正整数,即这两个正整数的最大公约数。 样例输入 6 9 样例输出 3 提示 求最大公约数可以使用辗转相除法: 假设a > b > 0,那么a和b的最大公约数等于b和a%b的最大公约数,然后把b和a%b作为新一轮的输入。 由于这个过程会一直递减,直到a%b等于0的时候,b的值就是所要

potao1的博客 326

手把手教你学Simulink——基于Simulink的机械臂正运动学仿真建模示例

机械臂正运动学概述正运动学的核心在于根据每个关节的角度值,通过坐标变换(如DH参数法或齐次变换矩阵)计算出末端执行器相对于基座的位置和姿态。常用的数学工具包括旋转矩阵、平移向量以及它们组合而成的齐次变换矩阵。仿真目标设计并实现一个机械臂正运动学模型。输入关节角度,输出末端执行器的位置和姿态。分析不同关节角度下的机械臂位置变化。假设我们有一个简单的3自由度(DOF)平面机械臂,其各关节的长度分别为l1l1​、l2l2​和l3l3​。在Simulink中,可以使用。

MHD0815的博客 359

sid1015918最大公约数{O(n+m)}

PID721 / 最大公约数  题目描述 有N个整数,kAc会对它们做Q次修改。 每次修改指的是对所有数加一个整数(可正可负) 每修改一次后,他想知道当前所有数的最大公约数是多少。 对于40%:N, Q 对于70%:N, Q 对于100%:N, Q 在这里,我们认为任意非负整数x跟0的最大公约数都是x,另外,负数的最大公约数等于其绝对值的最大公约数。   输入格式

hugedata 870

用AI科研绘图全新升级!借助谷歌新发布模型Nano Banana pro实测一键绘制机制图与技术路线图,直接告别文字乱码与低画质

之前有同仁反馈,用Nano Banana画科研插图的时候,要么文字部分容易乱码,要么抓不住关键内容,画出来的效果反复修改后,还是达不到理想的效果。终于在Gemini 3发布没几天,万众期待的大香蕉模型也成功升级到了Pro版本,官方名称叫“Gemini 3 Pro Image”,实际上也就是我们说的Nano Banana 2。这次的Nano Banana Pro模型,不仅可以直出4K高清图,还能自定义比例,推理能力和中文文字的稳定性也得到了提升。

智能AI让学术科研更容易 1887

SAP NetWeaver Business Client (NWBC) 的深入解析

SAP NetWeaver Business Client(NWBC)作为 SAP 提供的一种用户界面,旨在为终端用户提供无缝集成传统 SAP GUI 事务和新开发的基于 Web Dynpro ABAP 的应用程序的体验。SAP NetWeaver Business Client(NWBC)是 SAP 推出的用户界面,旨在为终端用户提供单一入口,集成传统的 SAP GUI 事务和新开发的基于 Web Dynpro ABAP 的应用程序。在实际业务场景中,NWBC 的应用提升了用户的工作效率和体验。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1603

D13:GCD Arrays(最大公约数数列,附题解)

原题:Problem - B - Codeforces 翻译: 描述:考虑由[l,r]范围内的所有整数组成的数组a。比如:如果l=3,r=7,那a=[3,4,5,6,7]。 给定l、r和k,求问在最多k次执行如下操作后,数组a中各元素的最大公约数gcd(a)是否可能大于1。 操作如下: 从a中任选2个数字; 从数组中删除其中一个; 把两数的的乘积放回数组a; gcd(b)表示数组b中各个整数的最大公约数(gcd); 输入:第一行:一个范围为[1,10^5]的整...

weixin_61096287的博客 872

MicroChip的SmartFusion2的M2S090芯片的全流程开发环境搭建和Demo设计

MicroChip的SmartFusion2的M2S090芯片的全流程开发环境搭建和Demo设计

qq_45806640的博客 455

引用thymeleaf模板,js中大于小于等符号转义异常问题

在springBoot框架下,整合了thymeleaf前端模板后,由于thymeleaf对标签要求比较严格,所以在js中使用> < 等符号时,会报出异常。 正常抒写: `<script> var a=0; var b=a+3; if(a>b) alert("假"); else alert("真"); </script>` 在引用thymeleaf后,...

搞代码的博客 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

最大公约数(GCD)

最大公约数(GCD) 求整数 a、b 的最大公约数,就是求同时满足 a%c=0、b%c=0 的最大正 整数 c,即求能够同时整除 a 和 b 的最大正整数 c。 在介绍欧几里得算法之前, 读者可能会有这样的思路: 若 a、b 均不为 0,则依次遍历不大于 a(或 b)的所有正整数,依次试验它是否同时满足两式,并在所有满足两式的正整数中挑选最 大的那个即是所求; 若 a、b 其中有一个为 0,那么最...

Yoc Lu 1466

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

求最大公约数和最小公倍数

最大公约数 碾转相除法:①gcd(la, b)=gcd(b, a%b) ②0的最大公约数就是另一个数 最小公倍数 两个数的乘积等于这两个数的最大公约数与最小公倍数的积。最小公倍数就是a * b / gcd(a, b)。 int gcd(long a, long b) { return b == 0 ? a : gcd(b, a % b);//gcd(a,b) = gcd(b,a % b) 0的最大公约数就是另一个数 } int lcm(int a, int b) {//两个数的乘积等于这两个数的最大公

yangqiang1997的博客 642

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

最大公约数的性质以及求解方法

 最大公约数是指两个不同时为0的正数a和b的公约数中的最大值。记做。下面是公约数的一些性质:    对于任意  是a与b的线性集合中的最小元素 最大公约数的求解方法,最先想打的是下面的解法: int gcd(int a, int b){ int ans = 1; for(int i = 1; i &lt;= min(a, b); i++){ if(a % i == ...

hustjlshi 4925

大于1的正整数 正则表达式

^[1-9][0-9]*$ 大于0的正整数 ^(([1-9]\d+)|([2-9]))$ 大于1的正整数

黑山老妖的小站 8626

求两个数的最大公约数。余数为0的时候,除数就是最大公约数

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int a, b, c; printf(“输入两个数:\n”); scanf("%d%d", &a, &b); c = (a > b) ? b : a; while (a%c != 0 || b%c != 0) { c–; } prin...

E_kay的博客 927

1747. 内存使用

1.注意operator<应该声明为const函数// 例如输入是 14 2的时候表示的是总的内存是14 , 总共有2个进程 // 接下来有2行, 每行分别是进程进行计算需要的内存和存放计算结果需要的内存 // 需要判断的是,总的内存减去上一个进程存放结果的内存以后大于或等于下一个进程计算需要的内存 // 另外是进程需要先进行排序,计算需要内存最多的最先进行,如果计算需要的内存相同,则存放结果需要

晨识草的博客 537

求最大公约数的两种算法

辗转相除法和移位相减法(Euclid & stein 算法)给出Stein算法如下: 如果A=0,B是最大公约数,算法结束 如果B=0,A是最大公约数,算法结束 设置A1 = A、B1=B和C1 = 1 如果An和Bn都是偶数,则An+1 =An /2,Bn+1 =Bn /2,Cn+1 =Cn *2(注意,乘2只要把整数左移一位即可,除2只要把整数右移一位即可) 如果An是偶数,Bn不是偶数,则A

C心C意 1381

C/C++中判断两个变量的大小相等关系时要特别注意数据深度不够带来的影响

先上有问题的程序图: 理论上 S[50]和G[60]应该是相等的,所以(G[j] - S[i]) >= 0应该是满足的,但实际上根据上面内存变量跟踪值,G[j] - S[i]是小于0的,所以导致语句: ( (G[j] - S[i]) < min_val && (G[j] - S[i]) >= 0)的值为False,这样程序就不是我们预期的! 怎么办呢?既然是由数据深度不够引起的,那我们更改它们的数据类型就行了。 比如上述的数组G和数据S,数据类型为int,我

昊虹AI笔记 3704

求最大公约数的4种算法(C++)

求最大公约数的4种算法(C++) 一、实验目的 1.计算两个正整数的最大公约数和最小公倍数,并进行程序的调式与测试。 2.理解四种不同的求最大公约数的方法,学习其思维模式。 3.了解算法的概念。对问题的分析时,进行合适的算法设计。 二、算法设计 1.题目分析 (1)首先输入一对正整数,对两个数进行判断,若不是正整数,则给出提示并重新输入,直至两个数均为正整数为止。 (2)将两个数传入计算最大公约数...

Elf.筱焱的博客 8万+

关于yml的松散绑定以及JSR303校验

一、松散绑定 我们首先写个实体类 属性如下 @Component @ConfigurationProperties(prefix = "dog") public class Dog { private String theName; private int age; 接着我们在yml中给属性赋值 以下两种都可以 dog: the_name: 白 age: 5 dog: the-name: 白 age: 5 然后运行我们的测试类 松散绑定我的理解就是: 不同的命名规则

weixin_45724872的博客 435

mysql--大于小于等于

在写项目的时候,mybatis的xml文件好像不认识">"."<".">="."<=" 这样的符号, 这时候我们就需要换一种方式表达(我总是忘记,写在博客记录一下,随时找): ">" .">=" ."<" ."<=" &gt; &gt;= &It; &am...

baidu_38878945的博客 4136
上一篇: TYZ 9/13 MAZE2
下一篇: TYZ11/13 解题报告
AzureMayfly
博客等级 码龄10年 1粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值