something about数论

1.https://www.luogu.org/problemnew/show/P3197

【越狱】题目要求的是越狱的状态数,总体思路是用所有可能的状态减去不越狱的状态 一共有 n个房间,m个宗教,则总状态数为 m^ n。那么不会越狱的状态就只考虑当前状态 与前一不同即可,则 m* (m1)^ (n1)。最后用个快速幂,即可。

2.https://www.luogu.org/problemnew/show/P2043

2.【质因子分解】因为这题数据小N<=10000,所以可以判断一下是否为质数,是否为因子,然后满 足条件的记个数,然后不停的除,计数。但注意当求是否为因子时,把 i 赋值给另一变量, 不然可能会除没。还找到一种神仙算法。

将一个质数不断除本来的阶乘最大数,并把这些商全部加起来。编程代码即为:

while (base > 0)
{
    base /= prime;
    count += base;
}

为什么呢?我们来想一想: (以100!举例)

假如我们把所有会贡献质因子的数列出来的话,就是这样:

1,2,3,4,5,6 …… 97,98,99,1001,2,3,4,5,697,98,99,100

我们不妨想一想,这当中有哪些会贡献一个2? 列出来的话,就是这样:

2 , 4 , 6 …… 98 , 1002,4,698,100

可以看到,正好占了[ n/2 ][n/2]个。

那这些数中,又有几个数会再贡献一个2?

4, 8, 12 …… 96, 1004,8,1296,100

也可以看出,占了[n/2^2][n/22]个。

这样就容易看出,为100!贡献的2共有: [n/2]+[n/2^2]+[n/2^3]+……[n/2]+[n/22]+[n/23]+

这样虽然是个无穷数列,但是一旦2^k>n2k>n,后面就全是0。

所以我们仅需计算[n/2]+n[n/2^2]+……+[n/2^{k-1}][n/2]+n[n/22]++[n/2k1]即可。

其余质因数也同理,所以我们先要算出所有比nn小的质数

”from 


3https://www.luogu.org/problemnew/show/P1403

【约数研究】这个题其实找到它的公式就好。f 【i 】=n/ i

, 因为可以把1~n的因子个数看作含2的因子的数的个数, 加上含3的因子的数的的个数。。。。。。而含二的因子的数 的个数为 n/ 2个,三个为 n/ 3个,bal al al a。

转载于:https://www.cnblogs.com/lalalalala1279/p/10659703.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值