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

洛谷 P13014:[GESP202506 五级] 最大公因数

【题目来源】
https://www.luogu.com.cn/problem/P13014

【题目描述】
对于两个正整数 a,b,他们的最大公因数记为 gcd(a,b)。对于 k>3 个正整数 c_1, c_2, \cdots,c_k,他们的最大公因数为:gcd(c_1,c_2,\cdots,c_k) = gcd(gcd(c_1,c_2,\cdots,c_{k-1}), c_k)
给定 n 个正整数 a_1,a_2,\cdots,a_n 以及 q 组询问。对于第 i(1\leq i\leq q) 组询问,请求出 a_1+i,a_2+i,\cdots ,a_n+i 的最大公因数,也即 gcd(a_1+i,a_2+i,\cdots ,a_n+i)

【输入格式】
第一行,两个正整数 n,q,分别表示给定正整数的数量,以及询问组数。
第二行,n 个正整数 a_1,a_2,\cdots,a_n

【输出格式】
输出共 q 行,第 i 行包含一个正整数,表示 a_1+i,a_2+i,\cdots ,a_n+i 的最大公因数。

【输入样例】
5 3
6 9 12 18 30

【输出样例】
1
1
3

【说明/提示】
对于 60% 的测试点,保证 1≤n≤10^3,1≤q≤10。
对于所有测试点,保证 1≤n≤
10^5,1≤q≤10^5,1≤ai≤1000。

【算法分析】
● “辗转相除法”求最大公约数:https://blog.csdn.net/hnjzsyjyj/article/details/145671149
● 最大公约数性质:

gcd(a,b)=gcd(a,b-a) \\ gcd(a,b,c)=gcd(a,b-a,c-b)\\ gcd(a_1, a_2,\cdots,a_n)=gcd(a_1,a_2-a_1,a_3-a_2,\cdots,a_n-a_{n-1})

【算法代码】

#include <bits/stdc++.h>
using namespace std;const int maxn=1e5+5;
int a[maxn];
int n,q,t;int gcd(int a,int b) {if(b==0) return a;return gcd(b,a%b);
}int main() {scanf("%d%d",&n,&q);for(int i=1; i<=n; i++) {scanf("%d",&a[i]);}sort(a+1,a+n+1);for(int i=2; i<=n; i++) {t=gcd(t,a[i]-a[i-1]);}for(int i=1; i<=q; i++) {printf("%d\n",gcd(t,a[1]+i));}return 0;
}/*
in:
5 3
6 9 12 18 30out:
1
1
3
*/





【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/145671149
https://blog.csdn.net/hnjzsyjyj/article/details/136276606



 

http://www.dtcms.com/a/278122.html

相关文章:

  • 基于python的栅格数据标准差椭圆
  • Can201-Introduction to Networking:Transport Layer 传输层
  • 跨领域科学探索智能体设计与实现
  • 模块化编程为何使用函数指针分析(一)(深入分析指针的实际应用)
  • 【uniapp】元胞自动机GameOfLife生命游戏项目开发流程详解
  • Java SE--图书管理系统模拟实现
  • 模型占用显存大小评估
  • 【AI大模型】ComfyUI:Stable Diffusion可视化工作流
  • java基础编程(入门)
  • C++多线程知识点梳理
  • 深入理解 Java Map 与 Set
  • 每天学一个八股(二)——详解HashMap
  • 封装---优化try..catch错误处理方式
  • 【echarts踩坑记录】为什么第二个Y轴最大值不整洁
  • Acrobat 表单中的下拉菜单(附示例下载)
  • 使用docker的常用命令
  • RS4585自动收发电路原理图讲解
  • 从 Manifest V2 升级到 Manifest V3 的注意事项
  • Extended Nested Arrays for Consecutive Virtual Aperture Enhancement
  • 财务管理体系——解读大型企业集团财务管理体系解决方案【附全文阅读】
  • Python异步编程
  • 57.第二阶段x64游戏实战-实时监控抓取lua内容
  • 利用低汇率国家苹果订阅,120 元开通 ChatGPT Plus
  • 14.使用GoogleNet/Inception网络进行Fashion-Mnist分类
  • docker基础部署
  • ID生成策略
  • 在新版本的微信开发者工具中使用npm包
  • 用信号量实现进程互斥,进程同步,进程前驱关系(操作系统os)
  • DOS下EXE文件的分析 <1>
  • MacBook Air通过VMware Fusion Pro安装Win11