Skip to content

Commit 4a01b55

Browse files
committed
Improve FloorSum
atcoder/ac-library#88
1 parent 52fc099 commit 4a01b55

File tree

1 file changed

+4
-6
lines changed

1 file changed

+4
-6
lines changed

Source/AtCoderLibrary/Math/MathLib.cs

+4-6
Original file line numberDiff line numberDiff line change
@@ -586,7 +586,7 @@ public static long FloorSum(long n, long m, long a, long b)
586586
{
587587
if (a >= m)
588588
{
589-
ans += (n - 1) * n * (a / m) / 2;
589+
ans += (n - 1) * n / 2 * (a / m);
590590
a %= m;
591591
}
592592
if (b >= m)
@@ -595,11 +595,9 @@ public static long FloorSum(long n, long m, long a, long b)
595595
b %= m;
596596
}
597597

598-
long yMax = (a * n + b) / m;
599-
long xMax = yMax * m - b;
600-
if (yMax == 0) return ans;
601-
ans += (n - (xMax + a - 1) / a) * yMax;
602-
(n, m, a, b) = (yMax, a, m, (a - xMax % a) % a);
598+
long yMax = a * n + b;
599+
if (yMax < m) return ans;
600+
(n, m, a, b) = (yMax / m, a, m, yMax % m);
603601
}
604602
}
605603
#endregion FloorSum

0 commit comments

Comments
 (0)