点击打开链接

题意:一年有s=2^n天,有k个人 问至少有两个人生日在同一天的概率?(答案%mod)
n,k<=1e18

算对立事件 任意两人生日都不同的概率 ( (2^n-1)*(2^n-2)*...*(2^n-(k-1)) )  /(2^(n*(k-1))
n,k<=1e18都非常大,尝试将分子分母同时约去gcd(A,B),分母是2的幂次 则gcd也肯定为2^i,找到最大i
分子可以展开成A=f(p)*2^n+(k-1)! f(p)为某个多项式 
则gcd2^i满足2^i|2^n && 2^i|(k-1)! 根据Legendre's定理(其实就是算因子2在k!中出现多少次) 求出d=2^i
对于分母 可以直接消掉d  对于分子(2^n-1)*(2^n-2)*...*(2^n-(k-1)) 
若k>mod 则分子显然为0(因为分子为mod个连续的数相乘,至少有一个数为mod的倍数)
若k<mod mod=1e6+3 暴力算出分子后乘上逆元即可.总的复杂度为O(mod+log(k)+log(n))

#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
const int N=2e5+20;
const ll mod=1e6+3;
ll n,k;
ll powmod(ll x,ll n)
{ll s=1;while(n){if(n&1)s=(s*x)%mod;x=(x*x)%mod;n>>=1;}return s;
}
ll inverse(ll x)
{ return powmod(x,mod-2);
}
int main()
{while(cin>>n>>k){ll pw=0,d;if(n<=63 && k>(1ll<<n)){puts("1 1");continue;}ll A=1,B;//if(k-1>=mod)//    A=0;ll x=2;//ÕÒµ½·Ö×ӺͷÖĸµÄgcdwhile(x<=k-1)pw+=(k-1)/x,x=x*2ll;d=powmod(2ll,pw);ll res=1,y=powmod(2,n);for(ll i=1;i<=k-1;i++){res=(res*(y-i+mod)%mod)%mod;if(res==0)//×î¶à×ömod-1´Î break;}res=(res*inverse(d))%mod;A=res;B=powmod(2ll,n)%mod;B=powmod(B,k-1)%mod;B=(B*inverse(d))%mod;A=(B-A+mod)%mod;cout<<A<<' '<<B<<endl;}return 0;
}

Codeforces 711E ZS and The Birthday Paradox 数论(Legendre's定理)相关推荐

  1. cf/codeforces#369-E - ZS and The Birthday Paradox- 数学+gcd+逆元+勒让德定理

    引理: 勒让德定理 :http://baike.baidu.com/link?url=mqSXfFsk18D6zM7C1IVMh11M-3PaDRwCzqnB2ThJFymE98UuTGjmStD_u ...

  2. CF369E. ZS and The Birthday Paradox

    1 /* 2 cf369E. ZS and The Birthday Paradox 3 http://codeforces.com/contest/711/problem/E 4 抽屉原理+快速幂+ ...

  3. 除法逆元(ZS and The Birthday Paradox,cf 711E)

    这题真挺不错的,需要一些数学知识,对细节要求高. 一些资料与参考: 除法逆元 http://blog.csdn.net/acmmaxx/article/details/18409701 逆元详解 ht ...

  4. CodeForces - 1497E2 Square-free division (hard version)(dp+数论)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的数列,现在最多可以修改 kkk 个数字为任意数值,现在问最少可以将数列划分成多少个连续的数列,使得每一个单独的段中,任意两个数的乘积都不能是完全 ...

  5. Codeforces 1499D - The Number of Pairs(数论 + 组合计数)

    昨晚的cf没打,然后有人QQ问我D来着,正好在上毛概课可以划水就来口胡一波题解( 较为简单的套路题 ? (逃 简单实现一下就行了 ~ #include <bits/stdc++.h>usi ...

  6. codeforces:C. Even Subarrays【纯数论 + 异或套路 + 数组代替dict优化】

    目录 题目截图 题目分析 ac code 总结 题目截图 题目分析 需要找子数组的异或和是否有奇数个因数 有奇数个因数的都是完全平方数 可以枚举所有可能的完全平方数 用前缀异或和记录,那么[i-j]的 ...

  7. codeforces:D. Range = √Sum【构造 + 数论分析】

    目录 题目截图 题目分析 ac code 总结 题目截图 题目分析 # 假设a1-an从小到大 # 考虑固定a1和an,不妨令a1 = p,an = q # 我们希望答案是对称的,(p + q) / ...

  8. cf711E. ZS and The Birthday Paradox

    链接 点击跳转 题解 a n s = 1 − 2 n ( 2 n − 1 ) ( 2 n − 2 ) - ( 2 n − ( k − 1 ) ) 2 n k ans = 1 - \frac{2^n(2 ...

  9. 数论一之定理证明——裴蜀/威尔逊/费马/扩展欧几里得/[扩展]欧拉/[扩展]中国剩余定理,欧拉函数,逆元,剩余系,筛法

    打死没想到会在H老师处学懂数论 同余,整除 模运算 埃式筛法 欧拉筛法 最大公约数和最小公倍数 辗转相除法 更相减损术 裴蜀定理 威尔逊定理 费马定理 同余等价类.剩余系.缩系 欧拉函数 欧拉定理 扩 ...

最新文章

  1. 使用 go 实现 Proof of Stake 共识机制
  2. 从一点儿不会开始——Unity3D游戏开发学习(一)
  3. Django入门-项目创建与初识子应用
  4. matplotlib - ax.bar()ax.pie()
  5. firefox与ie 的javascript区别
  6. C++设计模式-工厂模式
  7. 基于业务和平台理解数字营销概念
  8. 4.6.3 内表数据处理
  9. mysql setnull_1、Mysql无法创建外键的原因 2、MySql 外键约束 之CASCADE、SET NULL、RESTRICT、NO ACTION分析和作用...
  10. Swoole HTTP 的应用
  11. gitserver提交代码的总结
  12. 【11】MINST数据集的分类与效果验证
  13. 获取元素属性(offsetHeight、clientHeight...)无效
  14. P6615 Kruskal + 构造
  15. LeetCode 781 森林中的兔子 题解
  16. 给自己定个小目标:利用python进行数据分析
  17. matlab 双边滤波(彩色图)
  18. 封装R0805跟R0603贴片电阻有什么区别?
  19. 一个大专生从8K到13K的挫折经历
  20. 从输入 URL 到页面加载完成的过程中都发生了什么事情?

热门文章

  1. 古诗词模板html,诗词鉴赏万能模板
  2. 个人收集的一个比较喜欢的词句
  3. 毕业设计-基于微信小程序的电影票购票系统
  4. WIN10邮件客户端设置邮箱
  5. [Excel]Excel函数和用法(1)——绝对引用$的用法
  6. 使用谷歌插件Allow-Control-Allow-Origin解决跨域问题
  7. 画流程图,选Visio还是选亿图Edraw
  8. 音视频技术开发周刊 | 285
  9. unittest参数化parameterized
  10. java中怎么恢复label初始字体,更改默认的JLabel字体