#SZSY1005. 因数乘积最大化

因数乘积最大化

题目描述

样例 用 τ(x)\tau(x) 表示正整数 xx 的正因数个数。例如,66 的正因数为 1,2,3,61,2,3,6,所以 τ(6)=4\tau(6)=4。

给定一个长度为 nn 的正整数序列 a1,a2,…,ana_1,a_2,\ldots,a_n 和一个正整数 kk。

你需要选择一个长度为 nn 的正整数序列 b1,b2,…,bnb_1,b_2,\ldots,b_n,使得 ∏i=1nbi\prod_{i=1}^n b_i 是 kk 的因数,并最大化

∏i=1nτ(aibi).\prod_{i=1}^n \tau(a_i b_i).

输出这个最大值对 998244353998244353 取模的结果。最大值在取模前比较。

输入格式

从标准输入读入。

第一行包含两个正整数 n,kn,k。

第二行包含 nn 个正整数 a1,a2,…,ana_1,a_2,\ldots,a_n。

输出格式

向标准输出输出一行一个整数,表示最大值对 998244353998244353 取模的结果。

数据范围

对于所有数据,1≤n≤3×1051\le n\le 3\times10^5,1≤ai,k≤3×1051\le a_i,k\le 3\times10^5。

子任务

编号 分值 缩减范围
1 5 k=1k=1
2 20 n≤5n\le 5
3 15 k=2k=2
4 30 n≤104n\le 10^4
ai≤104a_i\le 10^4
k≤104k\le 10^4
5 —

样例 1

3 60
8 243 250
2304

样例 1 说明

可以选择 b=(15,4,1)b=(15,4,1),其乘积为 6060。此时 aibia_i b_i 分别为 120,972,250120,972,250,正因数个数分别为 16,18,816,18,8,乘积为 23042304,达到最大值。