Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
我用同余方程,怎么错了?看了个过了的程序,和他不一样的数据,我觉得他错了。#include <iostream> using namespace std; long long extended_gcd(long long a, int b, long long &x, long long &y) // a > 0, b > 0 {//方程a * x + b * y = d 中的各个变量的求解 if(b == 0) { x = 1; y = 0; return a; } long long t1 = extended_gcd(b, a % b, x, y); long long t2 = x; x = y; y = t2 - (a / b) * y; return t1; } //解系x0 + k * m / d bool equation_modular(long long a, long long b, long long m, long long &d, long long &x0) { long long x, y; d = extended_gcd(a, m, x, y); if(b % d != 0) return false; //没有解 x0 = x * (b / d) % m; x0 = (x0 + m) % m; return true; } int main() { long long x, y, m, n, L; while(cin>>x>>y>>m>>n>>L) { long long a = m - n; long long b = y - x; if(a == 0) { cout<<"Impossible"<<endl; return 0; } if(a < 0) { a = -a; b = -b; } b = b % L; b = (b + L) % L; long long d, x0; if(equation_modular(a, b, L, d, x0)) //在解系中找一个(0,L)间最小的 { int result = L - x0 - 1; result = result / double (L / d); result = (x0 + result * (L / d)) % L; cout<<result<<endl; } else cout<<"Impossible"<<endl; } return 0; } 程明明 11:22:00 我用同余方程解的 程明明 11:22:40 我也找了个过了的程序: #include <fstream> using namespace std; ifstream cin("working.in"); ofstream cout("working.out"); int main() { unsigned long x,y,m,n,l; while(cin>>x>>y>>m>>n>>l) { if (m == n) cout<<"Impossible\n"; else { if(m > n) { m = m - n; x = (y - x + l) % l; } else { m = n - m; x = (x - y + l) % l; } //把其中移动比较慢的那个当做不动。 n = x / m; x = x % m; y = x; // 用相对运动的思想。 while(1) { if(y==0) { cout<<n<<endl; break; } // 当两个人的距离等于零时 n = n + (y + l) / m; y = (y + l) % m; if(y == x) { cout<<"Impossible\n"; break; } //当两个人的距离又回到 } //原来的距离表示不可能 } } return 0; } 程明明 11:25:03 我找了几组测试数据,当l 比x,y 都大时和这个程序运行结果相同。l较小时就不同了。他的程序中x = (y - x + l) % l;对这种情况处理结果我认为是错的 程明明 11:25:51 但他的过了我的WA了 程明明 11:26:21 Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator