Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 102239 | Accepted: 19781 |
Description
Input
Output
Sample Input
1 2 3 4 5
Sample Output
4
注意:1.求gcd(a,b),a,b要求都大于0;
2.答案要求取最小的,要对“周期”取余。
#include<cstdio> #include<cstring> using namespace std; long long extend_gcd(long long a, long long b, long long &x, long long &y) { if(a == 0 && b == 0) return -1; if(b == 0){x = 1; y = 0; return a;} long long d = extend_gcd(b, a%b, y, x); y -= a/b*x; return d; } int main() { long long x,y,m,n,l; while(~scanf("%lld%lld%lld%lld%lld", &x, &y, &m, &n, &l)) { long long b1,c; if(n-m > 0) { b1 = n-m; c = x - y; } else { b1 = m-n; c = y-x; } long long x1,y1; long long dd = extend_gcd(l, b1, x1, y1); if(c%dd) printf("Impossible\n"); else { long long yy = c/dd*y1; long long aa = l/dd; yy = yy%aa; int cnt = 0; while(yy < 0) { cnt--; yy = yy - cnt*aa; } printf("%lld\n",yy); } } return 0; }
原文:http://www.cnblogs.com/ZP-Better/p/5251851.html