题目(Problem - D2. Reverse Card (Hard Version)- Codeforces):
题面:
给你两个正整数 $n$ , $m$ 。
请计算满足以下条件的有序数对 $(a, b)$的个数:
- $1\le a\le n$ , $1\le b\le m$ ;
- $b \cdot \gcd(a,b)$ 是 $ a+b $ 的倍数。
输入
每个测试包含多个测试用例。第一行包含测试用例的数量 $t$ ( $1\le t\le 10^4$ )。( $1\le t\le 10^4$ ).测试用例说明如下。
每个测试用例的第一行包含两个整数$n$ , $m$ ( $1\le n,m\le 2 \cdot 10^6$)。
保证所有测试用例中 $n$ 和 $m$ 的总和不超过 $2 \cdot 10^6$ 。
输出
为每个测试用例打印一个整数:有效配对的数量。
分析:
代码:
void solve(){
int n,m;cin>>n>>m;
int ans=0;
for(int i=1;i<=n/i;i++){
for(int j=1;j<=m/j;j++){
if(__gcd(i,j)==1)
ans+=min(n/i,m/j)/(i+j);
}
}
}