summaryrefslogtreecommitdiff
path: root/content/math/divSum.cpp
blob: 48302b5661bdbbe76c5b1eae57e3183965250476 (plain)
1
2
3
4
5
6
7
8
ll divSum(ll n, ll m, ll a, ll b){
	if (m == 0) return 0;
	ll ans = a/m * n*(n-1)/2 + b/m * n;
	a %= m;
	b %= m;
	ll y = (a*(n-1)+b) / m;
	return ans + y * (n-1) - divSum(y, a, m, m-b-1);
}