codeforces 787A

来源:互联网 发布:怎么拍下淘宝里的货 编辑:程序博客网 时间:2024/06/15 22:50

题意:两个人分别在a*x+b和c*y+d时发出声音(x,y=0,1,2,...),a,b,c,d已知,问他们会同时发出声音吗.能够输出时刻,否则输出-1

思路:暴力或者扩展欧几里得


#include<cstdio>#include<algorithm>using namespace std;int main(){int a,b,c,d;while(~scanf("%d%d%d%d",&a,&b,&c,&d)){int gcd=__gcd(a,-c);if((d-b)%gcd){printf("-1\n");continue;}for(int i=0;;i++){if((b+a*i-d)%c==0&&b+a*i-d>=0){printf("%d\n",a*i+b);break;}}}}


#include<cstdio>const int maxn = 1e6+100;int main(){///freopen("in.txt","r",stdin);int a,b,c,d;while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF){bool flag=1;for(int i=0;i<maxn;i++){int t1=b+a*i;if((t1-d)%c==0&&t1>=d){printf("%d\n",t1);flag=0;break;}}if(flag)printf("-1\n");}} 

扩展欧几里得
原创粉丝点击