[关闭]
@994495jj 2017-07-18T02:23:22.000000Z 字数 1018 阅读 691

cfgym101252E

201707 (ACM)数学


题意

题解

总结

代码

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define fi first
  4. #define se second
  5. #define mp make_pair
  6. #define pb push_back
  7. #define rep(i, a, b) for(int i=(a); i<(b); i++)
  8. #define sz(a) (int)a.size()
  9. typedef long long ll;
  10. typedef vector<int> vi;
  11. typedef pair<int, int> pii;
  12. //-----------
  13. ll gcd(ll a,ll b){return (b==0)?a:gcd(b, a%b);}
  14. int main(){
  15. freopen("input.txt", "r", stdin);
  16. freopen("output.txt", "w", stdout);
  17. ll l,v1,v2,t;
  18. while(~scanf("%lld%lld%lld%lld",&l,&v1,&v2,&t)) {
  19. if(v1<v2) swap(v1,v2);
  20. ll a=v1*t,b=v2*t;
  21. ll x=a/l,y=b/l;
  22. ll xx=a%l,yy=b%l;
  23. ll ans=x;
  24. ll fa=x%2,fb=(y+1)%2;
  25. if(fa==fb) {
  26. if(xx>=yy) ++ans;
  27. } else {
  28. if(xx+yy>=l) ++ans;
  29. }
  30. ll d=gcd(v1,v2);
  31. v1/=d;v2/=d;
  32. ll k=min(x/v1,y/v2);
  33. if((v1+v2)&1) ans-=(k+1)/2;
  34. printf("%lld\n",ans);
  35. }
  36. return 0;
  37. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注