CF1458A Row GCD
题目链接:https://codeforces.com/problemset/problem/1458/A
这道题比较考察对辗转相除法的理解.
对于gcd的题目,gcd(a,b)=gcd(a,b-a)是一个很常见的trick,知道这个性质即可秒杀本题.gcd也可以像前缀和那样来维护
还需要注意一个细节,由于a[i]-a[i-1]有可能出现负数,所以要先排序.
记得开longlong
inline ll gcd(ll a, ll b){return b == 0 ? a : gcd(b, a % b);}//gcd(a,b)=gcd(a,b-a)(b>a);
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,m;
cin>>n>>m;
vector<ll> a(n+1);
vector<ll> b(m+1);
ll res=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a.begin(),a.end());
for(int i=2;i<=n;i++)
{
res=gcd(a[i]-a[i-1],res);
}
for(int i=1;i<=m;i++)
{
cin>>b[i];
}
for(int i=1;i<=m;i++)
{
cout<<gcd(res,a[1]+b[i])<<' ';
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】