思路:

就是考虑一个结论

对于\(1<=x<=2^n\),那么\(x\)与\(2^n - x\)中的2的个数相等。

证明:

我们将\(x\)表示成\(2^k*b\),那么\(2^n - x\)就是\(2^n - 2^k*b\)当消去\(k\)个2之后,剩下的就是\(2^n - b\)显然不能被2除了(因为b显然不是一个偶数),

那么我们推出来的概率式子为:

\(1 - {\prod_{i=2^n-m+1}^{2^n-1} i\over 2^{n(m-1)}}\)

问题的瓶颈就是如何求分子的2的个数,应用上面的结论可以将分子化为:

如何求\((m-1)!\)里的2的个数。

简单了,随便枚举一下就可以了。

值得一提的是,这题的数据范围有毒,考虑到当\(m > mod\)时,显然取模为0,所以出题人很好心的没有给\(10^{18}\)的点。

代码我不知道为什么老是爆炸...

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int mod = 1e6+3;
inline ll pow_mod(ll a,ll b) {
ll res = 1;
while(b) {
if(b & 1) res = res * a % mod;
a = a * a % mod;
b >>= 1;
}
return res;
} ll n,m;
ll ans;
int main () {
freopen("random.in","r",stdin);
freopen("random.out","w",stdout);
scanf("%d %d",&n,&m);
if(m > mod) {
puts("0 0");
return 0;
}
if(log2(m) > n) {
puts("1 1");
return 0;
}
ll t1 = pow_mod(2,n);
ll t2 = pow_mod(t1,m-1);
for(int i = 1;i < m; ++i) {
int tmp = i;
while(!(tmp & 1)) {
ans ++;
tmp >>= 1;
}
}
ll fz = 1;
for(int i = 1;i < m; ++i) {
fz = fz * (t1 - i);
}
fz /= pow(2,ans);
ll fm = pow_mod(2,n*(m - 1) - ans);
printf("%lld %lld\n",(fm - fz)%mod,(fm)%mod);
return 0;
}

马力太弱。。

[JZOJ 5810] 简单的玄学的更多相关文章

  1. NOIP模拟测试「简单的区间·简单的玄学·简单的填数·简单的序列」

    简单的区间 $update$ 终于$AC$了 找到$(sum[r]+sum[l](sum表示以中间点为基准的sum)-mx)\%k==0$的点 注意这里$sum$表示是以$mid$为基准点,(即$su ...

  2. noip模拟12[简单的区间·简单的玄学·简单的填数]

    noip模拟12 solutions 这次考试靠的还是比较好的,但是还是有不好的地方, 为啥嘞??因为我觉得我排列组合好像白学了诶,文化课都忘记了 正难则反!!!!!!!! 害没关系啦,一共拿到了\( ...

  3. [CSP-S模拟测试]:简单的玄学(数学)

    题目描述 有$m$个在$[0,2^n)$内均匀随机取值的整型变量,球至少有两个变量取值相同的概率.为了避免精度误差,假设你的答案可以表示成$\frac{a}{b}$的形式,(其中$(a,b)=1$), ...

  4. [JZOJ 5811] 简单的填数

    题意:自己搜吧... 思路: 记二元组\((x,l)\)表示当前为\(x\)且之前有\(l\)个连续数与\(x\)相同. 并且维护up和low数组表示取到最大/最小值时,连续序列的长度. 正一遍,反一 ...

  5. [JZOJ 5807] 简单的区间

    题目: 求有多少组二元组\((l,r)\)使得:\(1<=l<=r<=n,k|f(l,r)\) \(f(l,r) = \sum_{i=l}^{r}a_i - max_{i=l}^{r ...

  6. [JZOJ 5804] 简单的序列

    思路: 似乎和某次培训的题很像啊... 将左括号记为1,右括号记为-1,那么最终一定加和为0,然后再求最小前缀和. 用dp解决即可. #include <bits/stdc++.h> us ...

  7. NOIP 模拟 $12\; \text{简单的玄学}$

    题解 有些难度 对于 \(30pts\) 直接暴力 对于 \(70pts\) 发现规律 \(2^n-a\) 与 \(a\;\;(a\in [1,2^n))\) 分解质因数后,\(2\) 的次数相同 \ ...

  8. 又联考了一场,感觉自己好菜啊,T2推出了公式但是不会逆元QAQ,难受啊!!!不过都确实是一道逆元的好题撒!

    简单的玄学(random) 题目描述: 样例输入: 样例1: 3 2 样例2: 1 3 样例3: 4 3 样例输出: 样例1: 1 8 样例2: 1 1 样例3: 23 128 提示: 时间限制:10 ...

  9. [NOIP模拟测试37]反思+题解

    一定要分析清楚复杂度再打!!!窝再也不要花2h20min用暴力对拍暴力啦!!! 雨露均沾(滑稽),尽量避免孤注一掷.先把暴力分拿全再回来刚正解. 即使剩下的时间不多了也优先考虑认真读题+打暴力而非乱搞 ...

随机推荐

  1. CSS文本垂直居中显示

    <style> .sty1 { width: 300px; height: 200px; background-color: black; text-align: center; colo ...

  2. git——修改已经提交并push后的commit注释

    把代码push到远程后,发现commit的注释居然多了几个错别字,不行,必须改了! 搜索了一些答案之后自己做了一个总结如下: ①修改倒数第次的commit 指令:$ git rebase -i HEA ...

  3. 【TCP】SYN攻击

    TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确 ...

  4. SCP-bzoj-1068

    项目编号:bzoj-1068 项目等级:Safe 项目描述: 戳这里 特殊收容措施: 区间DP.f[l][r][s]表示l到r的子串能最小被压成的长度,其中s∈[0,1]表示该串压缩后串中是否能含有M ...

  5. Python 生成json文件

    1.数据准备 数据下载 2.python代码 import datetime import os import mssqlhelper ms = mssqlhelper.MSSQL(host=&quo ...

  6. 2019 ACM/ICPC Asia Regional shanxia D Miku and Generals (二分图黑白染色+01背包)

    Miku is matchless in the world!” As everyone knows, Nakano Miku is interested in Japanese generals, ...

  7. css样式总结体会

    css属性值语法:https://developer.mozilla.org/zh-CN/docs/Web/CSS/Value_definition_syntax 1.margin-top属性不起作用 ...

  8. contest-20191022

    盘王节 sol 可以发现只有打光御符或完全不打御符两种情况.分开考虑,不打的双指针扫描,用最大的配最小的 打光的可以先贪心的打,然后当成0有无限个, 祝著节 sol 考虑求出最小生成树,记边权和为su ...

  9. [bzoj3033]太鼓达人 题解(搜索)

    Description 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队伍成员XLk.Poet_shy和ly ...

  10. [CQOI2011]放棋子 题解(dp+组合数学)

    Description Input 输入第一行为两个整数n, m, c,即行数.列数和棋子的颜色数. 第二行包含c个正整数,即每个颜色的棋子数. 所有颜色的棋子总数保证不超过nm. N,M<=3 ...