专栏文章
题解:P13014 [GESP202506 五级] 最大公因数
P13014题解参与者 11已保存评论 11
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 11 条
- 当前快照
- 1 份
- 快照标识符
- @mip0e0l7
- 此快照首次捕获于
- 2025/12/03 04:06 3 个月前
- 此快照最后确认于
- 2025/12/03 04:06 3 个月前
题意
给定 个正整数 以及 组询问。对于第 组询问,求出 。然而暴力会 TLE。
方法
注意到最大公因数有以下性质:
这是因为:
这个性质可以推广到多个数的情况。
所以计算所有 ()的最大公因数,记为 。
这样就将问题简化为计算 。对于每个查询 ,计算该柿子即可。
最后直接输出结果。
代码
CPP#include<bits/stdc++.h>
using namespace std;
int n, q,a[100005],d;
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++)
d=__gcd(d,a[i]-a[i - 1]);//根据 gcd 的性质计算 d
for (int i=1;i<=q;i++)
printf("%d\n",__gcd(d,a[1]+i));//输出时直接套公式
return 0;
}
相关推荐
评论
共 11 条评论,欢迎与作者交流。
正在加载评论...