[关闭]
@WangYixu 2018-06-15T11:35:17.000000Z 字数 494 阅读 879

[LgP1516]青蛙的约会

OI 题解 数论 数学

算法:数论

设相遇时间为,那么,两只青蛙相遇可以表示为,即,化简得
扩欧解即可。

代码

  1. #include<cstdio>
  2. #include<algorithm>
  3. using std::swap;
  4. typedef long long ll;
  5. void exgcd(ll a, ll b, ll &d, ll &x, ll &y) {
  6. if (!b) {
  7. d = a; x = 1; y = 0;
  8. } else {
  9. exgcd(b, a%b, d, y, x);
  10. y -= (a/b)*x;
  11. }
  12. }
  13. int main() {
  14. ll x, y, m, n, l;
  15. scanf("%lld %lld %lld %lld %lld", &x, &y, &m, &n, &l);
  16. ll t, k, d;
  17. if(n > m) {
  18. swap(m, n);
  19. swap(x, y);
  20. }
  21. exgcd(m-n, l, d, t, k);
  22. if((y-x) % d) printf("Impossible\n");
  23. else {
  24. printf("%lld\n", (t*(y-x)/d + (l/d)) % (l/d));//调整t为最小正值。
  25. }
  26. return 0;
  27. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注