[Aya Round 1 D] 文文的数学游戏
题目背景
在解决了上一题之后,琪露诺觉得自己仿佛就是天才。于是,射命丸文又给了她一道简单的数学题。
题目描述
给定长度为 n n n 的整数序列 a a a,你需要构造一个长度为 n n n 的整数序列 b b b 满足对于所有 1 ≤ i ≤ n 1\le i\le n 1≤i≤n,有 1 ≤ b i ≤ a i 1\le b_i \le a_i 1≤bi≤ai。且 gcd ( b 1 , b 2 , ⋯ , b n ) \gcd(b_1,b_2,\cdots,b_n) gcd(b1,b2,⋯,bn) 最大,其中 gcd \gcd gcd 表示最大公因数。试求出能得到的最大值和取得最大值时,不同的数列 b b b 的个数,对 1 0 9 + 7 10^9+7 109+7 取模。
定义两个长度为 L L L 的数列 c , d c,d c,d 不同,当且仅当存在整数 i ( 1 ≤ i ≤ L ) i(1 \le i \le L) i(1≤i≤L),使得 c i ≠ d i c_i \ne d_i ci=di。
输入格式
- 第一行一个输入整数 n n n。
- 第二行输入 n n n 个整数,表示序列 a a a。
输出格式
- 输出一行两个整数。分别表示能得到到的最大 gcd ( b 1 , b 2 , ⋯ , b n ) \gcd(b_1,b_2,\cdots,b_n) gcd(b1,b2,⋯,bn) 和对应的不同的 b b b 的个数,对 1 0 9 + 7 10^9+7 109+7 取模。
样例 #1
样例输入 #1
3
1 2 3
样例输出 #1
1 6
提示
样例 1 解释
注意到由于 1 ≤ b 1 ≤ a 1 = 1 1\le b_1\le a_1=1 1≤b1≤a1=1,因此 b 1 b_1 b1 必须要为 1 1 1,因此最大的 gcd \gcd gcd 值只能为 1 1 1。在这个前提下,所有合法的 b b b 如下:
- { 1 , 1 , 1 } , { 1 , 1 , 2 } , { 1 , 1 , 3 } , { 1 , 2 , 1 } , { 1 , 2 , 2 } , { 1 , 2 , 3 } \{1,1,1\},\{1,1,2\},\{1,1,3\},\{1,2,1\},\{1,2,2\},\{1,2,3\} {1,1,1},{1,1,2},{1,1,3},{1,2,1},{1,2,2},{1,2,3}。
数据范围与约束
对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 1 0 5 1 \le n\le 10^5 1≤n≤105, 1 ≤ a i ≤ 1 0 9 1 \le a_i\le 10^9 1≤ai≤109。
本题附带一组大样例。
Scratch实现
后续
接下来我会不断用scratch来实现信奥比赛中的算法题、Scratch考级编程题实现、白名单赛事考题实现,感兴趣的请关注,我后续将继续分享相关内容