题目描述

有$m$个在$[0,2^n)$内均匀随机取值的整型变量,球至少有两个变量取值相同的概率。
为了避免精度误差,假设你的答案可以表示成$\frac{a}{b}$的形式,(其中$(a,b)=1$),你需要输出$a$和$b$对${10}^6+3$取模后的值。


输入格式

第一行两个正整数$n,m$。


输出格式

一行两个整数,它们的含义如题所述。


样例

样例输入1:

3 2

样例输出1:

1 8

样例输入2:

1 3

样例输出2:

1 1

样例输入3:

4 3

样例输出3:

23 128


数据范围与提示

对于$10\%$的数据,$nm<16$;
对于$30\%$的数据,$nm<64$;
对于$50\%$的数据,$nm\leqslant {10}^3$;
对于$70\%$的数据,$m\leqslant {10}^6$;
对于$100\%$的数据,$1\leqslant n\leqslant {10}^{18},2\leqslant m\leqslant {10}^{18}$。


题解

数学题就要推式子。

显然这个概率就是$\dfrac{A_{2^2}^m}{2^{nm}}$,也就是$\dfrac{\prod \limits_{i=2^n-m+1}^{2^n-1}}{2^{n(m-1)}}$。

看起来很恐怖,其实如果$m>{10}^6+3$那么在连乘的过程中肯定会有其中一项是$0$,那么结果就是$0$。

但是我们要输出$gcd(a,b)=1$的分子和分母,所以我们还得约分……

发现我们只能约分出来$2$和$2$的倍数,所以我们考虑如何求出来有多少个$2$。

考虑$a$中$2$的个数和$2^n-a$中$2$的个数相同,所以我们只需要求出$(m-1)!$中$2$的个数即可,可以用一种类似快速幂的思想在$\Theta(\log m)$的时间复杂度内求出,然后约掉这些$2$就是最简分数啦。

时间复杂度:$\Theta(m)$。

期望得分:$100$分。

实际得分:$100$分。


代码时刻

#include<bits/stdc++.h>
using namespace std;
long long n,m;
long long fz,fm;
long long qpow(long long x,long long y)
{
long long res=1;
while(y)
{
if(y&1)res=res*x%1000003;
x=x*x%1000003;
y>>=1;
}
return res;
}
int main()
{
scanf("%lld%lld",&n,&m);
n%=1000002;
int flag=65;
long long pos=1,fj=0;
while(flag--)
{
pos<<=1;
if(pos>=m)break;
fj=(fj+(m-1)/pos)%1000002;
}
long long inv=qpow(qpow(2,fj),1000001);
long long C=qpow(2,n);
fm=qpow(C,(m-1)%1000002)*inv%1000003;
if(m<=1000003)
{
fz=inv;
for(int i=1;i<m;i++)
fz=fz*(C-i+1000003)%1000003;
fz=(fm-fz+1000003)%1000003;
printf("%lld %lld",fz,fm);
}
else printf("%lld %lld",fm,fm);
return 0;
}

rp++

[CSP-S模拟测试]:简单的玄学(数学)的更多相关文章

  1. [CSP-S模拟测试]:简单计算(数学)

    题目传送门(内部题104) 输入格式 第一行一个正整数$T$,表示该测试点内的数据组数,你需要对该测试点内的$T$组数据都分别给出正确的答案才能获得该测试点的分数. 接下来$T$组数据,每组数据一行两 ...

  2. [CSP-S模拟测试]:题(DP+数学)

    题目描述 出个题就好了.这就是出题人没有写题目背景的原因.你在平面直角坐标系上.你一开始位于$(0,0)$.每次可以在上/下/左/右四个方向中选一个走一步.即:从$(x,y)$走到$(x,y+1),( ...

  3. [CSP-S模拟测试]:B(DP+数学)

    题目传送门(内部题45) 输入格式 第一行$3$个整数$n,m,P$.第二行$m$个整数,表示$m$次询问. 输出格式 一行$m$个整数表示答案. 样例 样例输入1: 2 4 40 1 2 3 样例输 ...

  4. [CSP-S模拟测试]:简单的括号序列(组合数)

    题目传送门(内部题82) 输入格式 一行一个字符串$ss$,保证$ss$中只包含$'('$和$')'$. 输出格式 一行一个整数,表示满足要求的子序列数对$10^9+7$的结果. 样例 样例输入1: ...

  5. [CSP-S模拟测试]:C(倍增+数学)

    题目传送门(内部题152) 输入格式 第一行两个整数$N,Q$. 接下来一行$N$个整数,第$i$个为$a_i$. 接下来的$N-1$行,每行两个整数$u,v$.表示$u,v$之间有一条边. 接下来的 ...

  6. [CSP-S模拟测试]:物理课(数学)

    题目传送门(内部题144) 输入格式 从$physics.in$读入数据. 第一行一个数$T$,代表有$T$组数据.接下来$T$行每行$4$个浮点数,分别为$\theta,v,d,g$,保留到小数点后 ...

  7. [CSP-S模拟测试]:最大或(数学)

    题目传送门(内部题141) 输入格式 输入文件包含多组测试数据,第一行为一个正整数$T$,表示数据组数. 接下来$T$行,每行两个正整数$l,r$.数据保证$l\leqslant r$成立. 输出格式 ...

  8. [CSP-S模拟测试]:平方数(数学+哈希)

    题目传送门(内部题137) 输入格式 第一行,一个正整数$n$. 第二行$n$个正整数$a_1\sim a_n$. 输出格式 输出一个整数,为满足条件的二元组个数. 样例 样例输入: 51 2 3 4 ...

  9. [CSP-S模拟测试]:异或(数学)

    题目描述 给定$L,R$,我们希望你求出:$$\sum\limits_{i=L}^R\sum\limits_{j=L}^R(i\oplus j)$$其中这里的$\oplus$表示异或运算.答案对$10 ...

随机推荐

  1. (转)JVM运行时数据区

    转:http://www.cnblogs.com/myna/p/7567208.html java虚拟机运行时数据区,具体分为如下几个区域 程序计数器(Program Counter Register ...

  2. 使用DataV制作实时销售数据可视化大屏(实验篇)

    课时1:背景介绍 任务说明 ABC是一家销售公司,其客户可以通过网站下单订购该公司经营范围内的商品,并使用信用卡.银行卡.转账等方式付费.付费成功后,ABC公司会根据客户地址依据就近原则选择自己的货仓 ...

  3. error C2664: “ATL::CStringT<BaseType,StringTraits>::Remove”: 不能将参数 1 从“const char [2]”转换为“char”

    转自VC错误:http://www.vcerror.com/?p=1395 问题描述: 代码: CString str("asdfafda"); str.Remove(" ...

  4. Oracle 11g 的卸载

    Oracle 11g 的卸载 停止 oracle 相关的所有服务. 使用 Oracle 自带的 Universal Installer 卸载工具卸载 Oracle. 删除注册表 HKEY/LOCAL_ ...

  5. Protocol协议分发器

    1. 用途: 能够制定多个对象实现<Protocol>, 同一个代理方法,可以在多个对象中同时实现 2.原理: 利用消息转发机制,将方法分发到多个对象中 使用方式: self.tableV ...

  6. mongo 数据库存储

    mongo 数据库,获取有赞的数据. from app import mongo from app.external.yz.goods_api import YzGoodsApi from openp ...

  7. js 判断对象的长度

    Object.size = function(obj) { var size = 0, key; for (key in obj) { if (obj.hasOwnProperty(key)) siz ...

  8. python基础--二分查找

    # 二分查找 def sort_search(lst,key): """ 二分查找 :param lst: 有序数列 :param key: 要查找的关键值 :retur ...

  9. spring3.0+struts2+ibatis整合

    User.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLI ...

  10. 想实现网页滚动一定距离底部弹出div

    <script type="text/javascript"> $(window).scroll(function () { if ($(this).scrollTop ...