本题没有可用的提交语言。
题目背景
搬运自 2014 年清华大学信息学邀请赛。
题目描述
定义正整数域上的函数 f(x):N+→N+ 满足:
f(tmf(s))=sf(t)m,∀s,t∈N+
满足条件的函数会有很多,例如 f(x)=x 就是一个解。
现给定 m,n,求 f(n) 的最小值。
输入格式
由于输入的 n 可能很大,我们按照质因数分解的形式输入:
n=i=1∏dpiqi
输入第一行包含两个整数 m,d。接下来 d 行,第 i 行包含一对整数 p,q。数据保证 p 为质数且 qi>0。
输出格式
输出一行表示最小的 f(n),由于数值较大,请将输出答案以 e 为底取对数输出,即 ln(f(n))。结果保留四位小数。
2 2
2 1
3 2
2.4849
提示
【样例解释】
n=2×32=18。
一个可行的最优解为:
n |
f(n) |
1 |
2 |
3 |
3 |
2 |
4 |
9 |
5 |
7 |
6 |
7 |
5 |
8 |
27 |
9 |
4 |
10 |
21 |
11 |
13 |
12 |
18 |
13 |
11 |
14 |
15 |
15 |
14 |
16 |
81 |
17 |
23 |
18 |
12 |
f(n)=12,而这个可行解是让 f(n) 最小的解之一,故最终答案为 ln(12)≈2.4849。
【小贴士】
在 C/C++ 中,包含在 <math.h>
(或 <cmath>
)中的 log
函数,即 ln 函数。
对于保留 4 位有效数字的输出,C/C++ 输出语句举例:
printf("%.4f\n", answer);
在 Pascal 中直接使用函数 ln
即可。
对于保留 4 位有效数字的输出,Pascal 输出语句举例:
writeln(answer:0:4);
【数据范围】
本题共 20 个测试点,每个测试点等分。
测试点 |
特殊性质 |
1∼2 |
m≤2,n≤10 |
3∼5 |
pi≤100,qi≤1,m≤2,d≤10 |
6∼7 |
pi≤1000,qi≤1,m≤2,d≤50 |
8∼10 |
pi≤1000,qi≤2,m≤2,d≤50 |
11∼15 |
pi≤2000,qi≤5,m≤10,d≤50 |
16∼20 |
pi≤2000,qi≤5,m≤10,d≤100 |