[JZOJ 5810] 简单的玄学
思路:
就是考虑一个结论
对于\(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] 简单的玄学的更多相关文章
- NOIP模拟测试「简单的区间·简单的玄学·简单的填数·简单的序列」
简单的区间 $update$ 终于$AC$了 找到$(sum[r]+sum[l](sum表示以中间点为基准的sum)-mx)\%k==0$的点 注意这里$sum$表示是以$mid$为基准点,(即$su ...
- noip模拟12[简单的区间·简单的玄学·简单的填数]
noip模拟12 solutions 这次考试靠的还是比较好的,但是还是有不好的地方, 为啥嘞??因为我觉得我排列组合好像白学了诶,文化课都忘记了 正难则反!!!!!!!! 害没关系啦,一共拿到了\( ...
- [CSP-S模拟测试]:简单的玄学(数学)
题目描述 有$m$个在$[0,2^n)$内均匀随机取值的整型变量,球至少有两个变量取值相同的概率.为了避免精度误差,假设你的答案可以表示成$\frac{a}{b}$的形式,(其中$(a,b)=1$), ...
- [JZOJ 5811] 简单的填数
题意:自己搜吧... 思路: 记二元组\((x,l)\)表示当前为\(x\)且之前有\(l\)个连续数与\(x\)相同. 并且维护up和low数组表示取到最大/最小值时,连续序列的长度. 正一遍,反一 ...
- [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 ...
- [JZOJ 5804] 简单的序列
思路: 似乎和某次培训的题很像啊... 将左括号记为1,右括号记为-1,那么最终一定加和为0,然后再求最小前缀和. 用dp解决即可. #include <bits/stdc++.h> us ...
- NOIP 模拟 $12\; \text{简单的玄学}$
题解 有些难度 对于 \(30pts\) 直接暴力 对于 \(70pts\) 发现规律 \(2^n-a\) 与 \(a\;\;(a\in [1,2^n))\) 分解质因数后,\(2\) 的次数相同 \ ...
- 又联考了一场,感觉自己好菜啊,T2推出了公式但是不会逆元QAQ,难受啊!!!不过都确实是一道逆元的好题撒!
简单的玄学(random) 题目描述: 样例输入: 样例1: 3 2 样例2: 1 3 样例3: 4 3 样例输出: 样例1: 1 8 样例2: 1 1 样例3: 23 128 提示: 时间限制:10 ...
- [NOIP模拟测试37]反思+题解
一定要分析清楚复杂度再打!!!窝再也不要花2h20min用暴力对拍暴力啦!!! 雨露均沾(滑稽),尽量避免孤注一掷.先把暴力分拿全再回来刚正解. 即使剩下的时间不多了也优先考虑认真读题+打暴力而非乱搞 ...
随机推荐
- Table边框合并
<style> table, table tr th, table tr td { border: 1px solid #0094ff; } table { width: 200px; m ...
- 莫队算法 sqrt(n)分块思想
在此说一下本渣对莫队算法思想的一些浅薄理解 莫队算法的思想就是对真个区间的分块,然后按照每块来分别进行计算,这样最终的复杂度可以达到n*sqrt(n) 小Z的袜子是一道非常经典的题目.:题目链接htt ...
- Shell基础(五):sed基本用法、使用sed修改系统配置、sed多行文本处理、sed综合脚本应用
一.sed基本用法 目标: 本案例要求熟悉sed命令的p.d.s等常见操作,并结合正则表达式,完成以下任务: 1> 删除文件中每行的第二个.最后一个字符 2> 将文件中每行的第一个. ...
- shiro入门笔记之第一个demo创建
前言 看到这篇文章之前,可能很多小伙伴都没听过shiro,那么shiro是什么呢?shiro是Apache基金会下一个非常有名的开源项目(项目官网: http://shiro.apache.org/ ...
- opencv打开摄像头并新建窗口显示
几个程序使用的基本函数如下: ******************************************************************* cvCreateCameraCap ...
- 18、webservice使用
1.将axis2.war文件拷到tomcat,webapp文件夹下,然后重启tomcat 访问
- POJ 3304 Segments (判断直线与线段相交)
题目链接:POJ 3304 Problem Description Given n segments in the two dimensional space, write a program, wh ...
- jQuery全部选择器总结(转载)
jQuery选择器总结 不知道为什么博客园不能转载文章?如果知道如何转载的朋友可以评论告诉我,我只能ctrl+C/V下来,转载自: http://www.cnblogs.com/mcgrady/arc ...
- Nginx学习——proxy_pass
参考官网:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass 定义:用来设置被代理服务器的协议(http或https ...
- 高级Java必看的10本书
1.深入理解Java虚拟机:JVM高级特性与最佳实践 本书共分为五大部分,围绕内存管理.执行子系统.程序编译与优化.高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理. 2. ...