#CYF0054. 阶乘与最大公约数

阶乘与最大公约数

题目背景

C 最近学习了阶乘和最大公约数,现在他想要结合这两个知识点设计一个问题,首先:

  • 阶乘就是整数 xx 的阶乘是所有小于或等于 xx 的正整数的乘积,如 4!=1234=244! = 1 * 2 * 3 * 4 = 24

  • 最大公约数就是如果 nZ,n2n \in Z , n \geq 2 ,而 {a1,a2,a3,...,an}\{a_1, a_2, a_3, ... , a_n\} ,现有 dd 为正整数,设 da1,da2,da3,...,dand | a_1, d|a_2, d|a_3, ..., d|a_n ,则 dd 叫做 {a1,a2,a3,...,an}\{a_1, a_2, a_3, ... , a_n\} 的公约数,公约数会有很多,其中最大的叫做最大公约数,最大公约数是其他所有公约数的倍数,记做 (a1,a2,a3,...,an)=d(a_1, a_2, a_3, ... , a_n) = d ,如果想要求 aabb 的最大公约数,可以记做 gcd(a,b)gcd(a, b) 。如 gcd(2,6)=2gcd(2, 6) = 2​ 。

题目描述

题目很简单,请同学们求出 gcd(a!,b!)gcd(a!, b!) 的结果。

输入格式

输入多行。

第一行输入一个正整数 tt ,代表有 tt 组测试数据。

接下来 tt 行,每行输入两个正整数 a,ba, b

输出格式

输出多行。
对于每一组测试数据,输出 gcd(a!,b!)gcd(a!, b!) 的结果。

样例 #1

样例输入 #1

5
1 10000
12 6
12 12
10000 9
1 99999999

样例输出 #1

1
720
479001600
362880
1

提示

数据范围与提示:

样例解释】:

  • 对于第二组样例:$12! = 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 = 479001600; 6! = 1 * 2 * 3 * 4 * 5 * 6 = 720$ 然后求 gcd(479001600,720)=720gcd(479001600, 720) = 720

  • 对于第三组样例:两个数字都是 1212 ,所以最大公约数就是 12!12!

数据范围】:

测试点编号 a,ba, b \geq a,ba, b \leq min(a,b)min(a, b) \leq
01 ~ 10 11 10510^5 1212
11 ~ 15 10910^9
16 ~ 20 101810^{18}

对于 100%100\% 的数据,保证 $1 \leq t \leq 10^3, 1 \leq a, b \leq 10^{18}, min(a, b) \leq 12$​​ 。