#108. [GESP 模拟 五级] - 质数与乘法

[GESP 模拟 五级] - 质数与乘法

题目描述

我们先引入几个之后需要使用的定义:

  • prime(x)\texttt{prime(x)} 表示 xx 的所有质因子组成的集合。例如:

    • prime(140)={2,5,7}\texttt{prime(140)} = \{2, 5, 7\}
    • prime(169)={13}\texttt{prime(169)} = \{13\}
  • g(x,p)g(x, p) 表示最大的 pkp^k(其中 kk 是整数),使得 xxpkp^k 的倍数。例如:

    • g(45,3)=9g(45, 3) = 9454532=93^2=9 的倍数,但不是 33=273^3=27 的倍数)
    • g(63,7)=7g(63, 7) = 7636371=77^1=7 的倍数,但不是 72=497^2=49 的倍数)
    • g(70,2)=2g(70,2)=2707021=22^1=2 的倍数,但不是 22=42^2=4 的倍数)
  • 定义 f(x,y)f(x, y)g(y,p)g(y, p) 在所有 pprime(x)p \in \texttt{prime(x)} 下的乘积:

    • f(x,y)=pprime(x)g(y,p)f(x, y) = \prod_{p \in \texttt{prime(x)}} g(y, p),通俗解释 f(x,y)f(x,y) 的含义为 xx 的所有质因子 ppg(y,p)g(y,p) 的乘积。
    • 例如:
      • $f(30, 70) = g(70, 2) \cdot g(70, 3) \cdot g(70, 5) = 2^1 \cdot 3^0 \cdot 5^1 = 10$
      • $f(525, 63) = g(63, 3) \cdot g(63, 5) \cdot g(63, 7) = 3^2 \cdot 5^0 \cdot 7^1 = 63$

你现在给定两个整数 xxnn,请你计算如下表达式的结果并对 109+710^9+7 取模后输出:

$$f(x, 1) \times f(x, 2) \times \ldots \times f(x, n) \bmod (10^9 + 7) $$

输入格式

第一行输入 xxnn

输出格式

输出一个整数,为 $f(x, 1) \times f(x, 2) \times \ldots \times f(x, n)$ 对 109+710^9 + 7 取模

10 2
2
20190929 1605
363165664
947 987654321987654321
593574252

提示

样例 1 解释

在第一个样例中,f(10,1)=g(1,2)×g(1,5)=1f(10, 1) = g(1, 2) \times g(1, 5) = 1f(10,2)=g(2,2)×g(2,5)=2f(10, 2) = g(2, 2) \times g(2, 5) = 2,因此答案为 1×2=21 \times 2 = 2

数据范围

对于 100%100\% 的数据,2x1092 \le x \le 10^91n10181 \le n \le 10^{18},所有输入值均为整数。

Subtask\text{Subtask} 分值 特殊性质
11 1010 n=1n=1
22 3030 x,n102x,n\le 10^2
33 6060