Codeforces 711E. ZS and The Birthday Paradox

原创 2016年08月31日 13:14:20

题目链接

题目大意

  假设一年有2^n天,问k个小朋友中有两个小朋友生日相同的概率。

  假设该概率约分后为 p / q ,输出p , q对1000003取模的解。

  n , k <= 10^18。

解题分析

  若k > 2^n 则答案为1 / 1 , 否则答案为 1 - A(2^n,k) / (2^n)^k ,

  可以发现分子与分母的gcd必定为(2^i)*(2^n)。

因为A(2^n,k)=(2^n)(2^n-1)(2^n-2)(2^n-3)(2^n-4)…..=(2^n)(2^n-1)(2*(2^(n-1)-1))(2^n-3)(2*2*(2^(n-2)-1)
也就是说只和减掉的数有关!!!
然后这里去求i发现i就是1到k-1中2的次数。
然后就是k-1不停除2相加就是了。

然后gcd的逆元就是quickpowmod(quickpowmod(2,num,mod),mod-2,mod)

然后就GG了

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
#define mod 1000003
const int maxn=200005;

LL quickpowmod(LL x,LL y,LL mo)
{
      LL ret = 1;
      while(y){
         if(y&1)
             ret = ret*x%mo;
         x = x*x%mo;
         y >>= 1;
     }
   return ret;
}
LL n,k,num;

int main()
{
    scanf("%I64d%I64d",&n,&k);
     if (n<=60 && k>(1ll<<n)){
         printf("1 1\n");
         return 0;
     }
    num=0;
    LL t=k-1;
    while(t){
        t/=2;
        num+=t;
    }
    t=quickpowmod(2,n,mod);
    LL ans=1;
    LL ans1=1;
    for(LL i=1;i<=k-1;i++){
        ans=ans*(--t)%mod;
        if(ans==0)break;
    }
    ans1=quickpowmod(quickpowmod(2,n,mod),k-1,mod);
    LL inv=quickpowmod(quickpowmod(2,num,mod),mod-2,mod);
    ans1=ans1*inv%mod;
    ans=ans*inv%mod;
    ans=(ans1-ans+mod)%mod;
    printf("%I64d %I64d\n",ans,ans1);
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

CodeForces-711E ZS and The Birthday Paradox(勒让德定理+抽屉原理)

E. ZS and The Birthday Paradox time limit per test 2 seconds memory limit per test 256 m...

Codeforces Problem 711E ZS and The Birthday Paradox(抽屉原理+乘法逆元+费马小定理+组合数+快速幂+概率论)

Codeforces Problem 711E ZS and The Birthday Paradox(抽屉原理+乘法逆元+费马小定理+组合数+快速幂+概率论)...

【28.57%】【codeforces 711E】ZS and The Birthday Paradox

time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandar...

Codeforces 711 E. ZS and The Birthday Paradox(数学)——Codeforces Round #369 (Div. 2)

[传送门](http://codeforces.com/contest/711/problem/E) E. ZS and The Birthday Paradoxtime limit per test...

【数论】codeforce711E ZS and The Birthday Paradox

题目大意: 给n和k。 求2^n天,k个人,其中至少两人同一天生日的概率。 1 ≤ n ≤ 1018, 2 ≤ k ≤ 1018 输出分子和分母 MOD 1e6+3 求MOD前,...

CodeForces 369 div2 E. ZS and The Birthday Paradox 数论

E. ZS and The Birthday Paradox time limit per test 2 seconds memory limit per test 256 m...

Codeforces #369 (Div. 2) E. ZS and The Birthday Paradox (勒让德定理+逆元)

E. ZS and The Birthday Paradox time limit per test 2 seconds memory limit per test 256 megabytes...

codeforces Round#369 div2-E ZS and The Birthday Paradox

题意: 一年中有2^n天,问有k个人至少有两个人生日在同一天的概率,用分数表示。其中n,k 题解:1e6+3为素数。直接求不好求,我们可以总数-不成立的数。不成立的即为k个人中没有一个人的生日在同一...

CodeForces 639E Bear and Paradox

CodeForces 639E Bear and Paradox

[Codeforces 590E] Birthday

题目链接: http://codeforces.com/problemset/problem/590/E题意: 给出n个字符串, 从中取出最多的字符串满足彼此之间互不为其子串, 输出最多能取多少个和任...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Codeforces 711E. ZS and The Birthday Paradox
举报原因:
原因补充:

(最多只允许输入30个字)