专栏文章
题解:CF1155C Alarm Clocks Everywhere
CF1155C题解参与者 2已保存评论 2
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @miqecop5
- 此快照首次捕获于
- 2025/12/04 03:25 3 个月前
- 此快照最后确认于
- 2025/12/04 03:25 3 个月前
题目分析
第二行输入了每次闹钟响的时间,第三行输入了间隔时间。而 和 都非常大,所以无法暴力。后来转念一想,任意一个 如果是他们的最大公因数,就输出
Yes,否则就输出 NO,这道题的核心就是求最大公因数。题目解法
其实分析完题目,就大致知道怎么写了。本题就是求这些时间间隔之差的最大公因数。最后再循环枚举 能否被他们的最大公因数整除,能就输出
YES,然后输出 和当前的 就可以结束了,否则输出 NO。AC 代码
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n,m;
cin>>n>>m;
int a;
cin>>a;
int gcd=0;
for(int i=1;i<n;i++){
int x;
cin>>x;
if(x-a==0)gcd=a;
else gcd=__gcd(gcd,abs(x-a));
}
for(int i=1;i<=m;i++){
int p;
cin>>p;
if(gcd%p==0){
cout<<"YES\n"<<a<<" "<<i;
return 0;
}
}
cout<<"NO";
}
相关推荐
评论
共 2 条评论,欢迎与作者交流。
正在加载评论...