51nod挑的部分5级题

Posted ytytzzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51nod挑的部分5级题相关的知识,希望对你有一定的参考价值。

最近心情不好所以写代码来获得快落

4级题有点难做?然后就开始挑简单的5级题开始写

然后准备记录一些自己没有做出来

参考讨论区或者博客才做出来的题目

 

51nod_1189 阶乘分数

额这个题参考了讨论区

令 t = n!

1/t = 1/x + 1/y , 0 < x <= y 的正整数解计数, n <= 1e6

考虑对式子进行变换

1/t = (x + y) / xy

xy = t * (x + y)

我们这时候应该有一个反应,配方有

(x - t) * (y - t) = t * t

所以考虑统计 t * t 的因子数就可以了

分解质因数即可

技术分享图片
 1 n, m, k = int(input()), 1, 1000000007
 2 v = [0 for i in range(n + 1)]
 3 p = [0 for i in range(n + 1)]
 4 for i in range(2, n + 1):
 5     if not v[i]:
 6         p[0] += 1
 7         p[p[0]] = i
 8         t, j = 1, i
 9         while j <= n:
10             t += n // j * 2
11             j *= i
12         m = m * t % k 
13     for j in range(1, p[0] + 1):
14         if i * p[j] > n:
15             break
16         v[i * p[j]] = 1
17         if i % p[j] == 0:
18             break
19 print ((m + 1) * pow(2, k - 2, k) % k)
View Code

 

以上是关于51nod挑的部分5级题的主要内容,如果未能解决你的问题,请参考以下文章

51 nod1067 Bash游戏 V2(sg函数打表)

51Nod 1113 矩阵快速幂

51 Nod 1067 博弈 SG函数

51nod——1391 01串(字符串前缀和)

51nod 1284 2 3 5 7的倍数 | 容斥原理

51nod 1381 硬币游戏