Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 99389 | Accepted: 18940 |
Description
Input
Output
Sample Input
1 2 3 4 5
Sample Output
4 没看数据,wrong了 求出方程:(n-m)*t=(X-Y)%L就能转化为扩展欧几里得的形式了 ac代码:#include<stdio.h> #include<string.h> #include<math.h> #include<iostream> #include<algorithm> #define MAXN 1000100 #define INF 0xfffffff #define MIN(a,b) a>b?b:a using namespace std; long long x,y; long long gcd(long long a,long long b) { if(b==0) { x=1,y=0; return a; } else { long long ans=gcd(b,a%b); long long t=x; x=y; y=t-(a/b)*y; return ans; } } int main() { long long n,m,a,b,l; while(scanf("%lld%lld%lld%lld%lld",&a,&b,&m,&n,&l)!=EOF) { a=b-a; m=m-n; long long ans=gcd(m,l); long long num; if(a%ans) num=-1; else { x*=a/ans;l/=ans; if(l<0) l=-l; num=x%l; if(num<=0) num+=l; } if(num==-1) printf("Impossible\n"); else printf("%lld\n",num); } return 0; }