整数对
枚举余数
码队的弟弟喜欢做数学题。这不,听说你也喜欢做数学题,码队的弟弟非常高兴,决定立刻送给你一道数学题,请你完成。
给定三个整数 n,m,p求满足$ a \times b = k \times pa×b=k×p (( 1 \le a \le n, 1 \le b \le m, k1≤a≤n,1≤b≤m,k为任意正整数 ))$的整数对 (a,b)(a,b) 的数量。
#include<bits/stdc++.h> using namespace std; typedef long long ll; int main() { int T; scanf("%d",&T); while(T--){ ll n,m,p; scanf("%lld%lld%lld",&n,&m,&p); ll t=n/p; ll ans=0; for(ll r=0;r<=p-1;r++){ if(r==0){ ans+=t*m; }else if(r<=n%p){ ans+=(t+1)*(m/(p/__gcd(r,p))); } else ans+=t*(m/(p/__gcd(r,p))); } cout<<ans<<'\n'; } }