题目
给出一个二元组(A,B)
求出无序二元组(a,b) 使得(a|A,b|B)的组数
无序意思就是(a,b)和(b,a) 算一组.
输入描述:
第一行数据组数 T(1≤T≤10000)
接下来T行,每行两个正整数 A,B(1≤A,B≤10000)
输出描述:
共T行,每行一个结果
示例1
输入
复制
1
4 6
输出
复制
11
说明
样例解释:
二元组如下:
(1,1)(1,2)(1,3)(1,6)
(2,1)(2,2)(2,3)(2,6)
(4,1)(4,2)(4,3)(4,6)
共12组.
无序二元组如下:
(1,1)(1,2)(1,3)(1,6)
(2,2)(2,3)(2,6)
(4,1)(4,2)(4,3)(4,6)
共11组
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication9
{
class Program
{
static void Main(string[] args)
{
int num = int.Parse(Console.ReadLine());
string line;
while ((line = Console.ReadLine())!=null)
{
string[] temp = line.Split(' ');
int a = int.Parse(temp[0]);
int b = int.Parse(temp[1]);
int m = gcd(a, b);//获取最大公因子;
int ma = find(a);
int mb = find(b);
int mm = find(m);
int result = ma * mb - mm * (mm - 1) / 2;
Console.WriteLine(result);
break;
}
}
static int gcd(int a,int b)
{
if (b == 0) return a;
return gcd(b, a % b);
}
static int find(int a)
{
int result = 0;
for (int i = 1; i <= a; i++)
{
if (a % i == 0)
result++;
}
return result;
}
}
}