wenbao与勒让德定理

何为勒让德定理?

 

在正数n!的素因子标准分解式中,素数p的指数记作

  

,则

  

 

求n的阶乘中可以快速算出它可以除的质数的最高次幂(即,最多可以除多少次)

 

http://codeforces.com/contest/711/problem/E

当然这里也用到了逆元,快速幂

 

 1 #include <iostream>
 2 using namespace std;
 3 #define LL long long
 4 const LL MOD = 1e6+3;
 5 LL n, k, i, j, num = 0;
 6 LL pow_mod(LL x, LL y){
 7     LL ans = 1;
 8     while(y > 0){
 9         if(y & 1) ans = ans*x%MOD;
10         x = x*x%MOD;
11         y >>= 1;
12     }
13     return ans;
14 }
15 int main(){
16     scanf("%lld%lld", &n, &k);
17     if(n < 64 && 1LL << n < k){
18         printf("1 1\n");
19         return 0;
20     }
21     for(i = k-1; i >= 1; i/=2){
22         num += i/2;
23     }
24     LL N = pow_mod(2, n);
25     LL xx = pow_mod(2, num);
26     LL ni = pow_mod(xx, MOD-2), zi = 1;
27     for(i = 1; i <= k-1; ++i){
28         zi = zi*(N-i)%MOD;
29         if(N == i) break;
30     }
31     zi = zi*ni%MOD;
32     LL mu = pow_mod(N, k-1)*ni%MOD;
33     printf("%lld %lld\n", (mu-zi+MOD)%MOD, mu);
34     return 0;
35 }

 

 

只有不断学习才能进步!

 

转载于:https://www.cnblogs.com/wenbao/p/6475997.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值