等差数列整除整数向下取整求和
找的一个巨巨的板子,,,但是不知道怎么证的。。。。。
还是存一下板子吧。。。。
#include <bits/stdc++.h>
using namespace std;
#define ll long long
//a 公差 b 首项 c 除数 n 项数
ll get(ll a,ll b,ll c,ll n){
if (n<=0) return 0;
if (n==1) return b/c ;
ll tmp = 0;
tmp += a/c*(n-1)*n/2+ b/c*n;
a = a%c;
b = b%c;
if (a==0) return tmp;
return tmp+get(c,(a*n+b)%c,a,(a*n+b)/c);
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int T;ll p,q,n;
cin>>T;
while(T--){
cin>>p>>q>>n;
cout<<(p*n*(n+1)/2-q*get(p,p,q,n))<<endl;
}
}