确实牛逼。。。。。。这个转化我反正肯定想不到。。。

考虑 \(a=b\) 的情况。发现出了平局之外都是一半赢一半输。可以得到此时的答案为:

\[\frac{2^{a+b}-\sum_{i=0}^{a}\binom{a}{i}^2}{2}
\]

后面是范德蒙德卷积,可以得到答案是 \(\frac{2^{a+b}-\binom{2a}{a}}{2}\)。

接下来考虑 \(a\neq b\)。前面的情况相当于是考虑将一个赢的方案和输的方案配对,所以我们考虑这个问题的时候也考虑将赢的方案和输的方案配对。

设能够配对的方案数为 \(q\),不能够配对的方案数为 \(p\),容易发现不能够配对的方案数一定是小 A 能够胜利的方案数。

答案就是 \(p+\frac{q}{2}\)。

只要能够计算出其中一个就可以了。考虑计算不能配对的方案数。

设 \(x\) 为小 A 的方案中硬币朝上的次数,\(y\) 为小 B 的方案中硬币朝上的次数。

如果一个方案不能配对必定满足 \(x>y\) 和 \(a-x>b-y\),即 \(a-b>x-y\)。于是我们可以枚举这个 \(x-y\):

\[\sum_{i=0}^{b}\sum_{j=1}^{a-b-1}\binom{b}{i}\binom{a}{i+j}
\]
\[\sum_{j=1}^{a-b-1}\sum_{i=0}^{b}\binom{b}{b-i}\binom{a}{i+j}
\]
\[\sum_{j=1}^{a-b-1}\binom{a+b}{b+j}
\]
\[\sum_{i=1}^{a-b-1}\binom{a+b}{b+i}
\]

使用 exLucas 计算即可。

需要注意的是最后要除以一个 \(2\),把模数乘上二,最后直接除以一个 \(2\) 即可。

  1. #include<functional>
  2. #include<cstdio>
  3. using std::function;
  4. typedef unsigned ui;
  5. typedef __uint128_t LL;
  6. typedef unsigned long long ull;
  7. const ui pw2[11]={1,2,4,8,16,32,64,128,256,512,1024};
  8. const ui pw5[11]={1,5,25,125,625,3125,15625,78125,390625,1953125,9765625};
  9. const ui pw10[11]={1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};
  10. struct Barrett{
  11. ull m,b;
  12. Barrett(const ui&m=1):m(m),b(((LL(1)<<64)+m-1)/m){}
  13. friend inline ull operator%(const ull&a,const Barrett&mod){
  14. return a-mod.m*(LL(mod.b)*a>>64);
  15. }
  16. };
  17. inline void exgcd(const ui&a,const ui&b,int&x,int&y){
  18. if(!b)return x=1,y=0,void();exgcd(b,a%b,y,x);y-=ui(a/b)*x;
  19. }
  20. inline ui inv(const ui&n,const ui&mod){
  21. int x,y;exgcd(n,mod,x,y);return x<0?x+mod:x>=mod?x-mod:x;
  22. }
  23. inline ui pow(ui a,ull b,const Barrett&mod){
  24. ui ans(1);for(;b;b>>=1,a=1ull*a*a%mod)if(b&1)ans=1ull*ans*a%mod;return ans;
  25. }
  26. inline ui pow(ui a,ull b,const ui mod){
  27. ui ans(1);for(;b;b>>=1,a=1ull*a*a%mod)if(b&1)ans=1ull*ans*a%mod;return ans;
  28. }
  29. struct exLucas{
  30. Barrett p,mod;
  31. ui P,MOD,fac[1953126];
  32. inline void init(const ui&tp,const ui&tmod){
  33. fac[0]=1;p=Barrett(P=tp);mod=Barrett(MOD=tmod);
  34. for(ui i=1,j=1;i<=MOD;++i,++j,j*=j!=P)fac[i]=1ull*fac[i-1]*(j?i:1)%mod;
  35. }
  36. inline ull g(const ull&n){
  37. ull pk(P),ans(0);while(pk<=n)ans+=n/pk,pk*=P;return ans;
  38. }
  39. inline ui f(const ull&n){
  40. return n?1ull*f(n/P)*pow(fac[MOD],n/MOD,mod)%mod*fac[n%mod]%mod:1;
  41. }
  42. inline ui operator()(const ull&n,const ull&m){
  43. ui c=pow(P,g(n)-g(m)-g(n-m),mod);
  44. return c?1ull*f(n)*inv(f(m),MOD)%mod*inv(f(n-m),MOD)%mod*c%mod:0;
  45. }
  46. }C2,C5;
  47. inline ui Solve(const ull&a,const ull&b,const ui&k){
  48. const ui&mod2=pw2[k+1],&mod5=pw5[k],&mod=mod2*mod5;
  49. ui ans(0);C2.init(2,mod2);C5.init(5,mod5);
  50. function<ui(const ull&,const ull&)>
  51. C=[&](const ull&n,const ull&m){
  52. return 1ull*(1ull*C2(n,m)*inv(mod5,mod2)%mod*mod5+1ull*C5(n,m)*inv(mod2,mod5)%mod*mod2)%mod;
  53. };
  54. if(a==b)return(pow(2,a+b,mod)+mod-C(a+b,a))/2%pow(10,k,2e9);
  55. for(ui i=1;i<a-b;++i)ans=(ans+C(a+b,b+i))%mod;
  56. return(pow(2,a+b,mod)+ans)/2%pow(10,k,2e9);
  57. }
  58. inline void write(const ui&n,const ui&k){
  59. for(ui i=k-1;i<k;--i)printf("%u",n/pw10[i]%10);printf("\n");
  60. }
  61. signed main(){
  62. ull a,b;ui k;
  63. while(~scanf("%llu%llu%u",&a,&b,&k))write(Solve(a,b,k),k);
  64. }

LGP3726题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. 学习JSP篇:jsp简单介绍

    这几天开始学习JSP和Servlet,写些博客,记录自己的学习过程,算是自己从业开始的一个见证. 一.什么是JSP JSP的全称是Java Service Page,一种动态的网页开发技术,区别于静态 ...

  2. JSP页面乱码解决

    1. tomcat 设置端口处加上 URIEncoding="UTF-8" 2. tomcat 的bin文件夹下的catalina.bat中如下位置加上如下编码:-Dfile.en ...

  3. Solution -「CTS2019」珍珠

    题目   luogu. 题解   先 % 兔.同为兔子为什么小粉兔辣么强qwq. 本文大体跟随小粉兔的题解的思路,并为像我一样多项式超 poor 的读者作了很详细的解释.如果题解界面公式出现问题,可以 ...

  4. Idea个人配置

    Intellij IDEA配置 1. 优化导包配置 2. 取消tab页单行显示 多行显示更多的文件,方便查看. 3. 双斜杠注释改成紧跟代码头 4. 选中复制整行 原本只会复制你选中的代码,改完配置后 ...

  5. R数据分析:数据清洗的思路和核心函数介绍

    好多同学把统计和数据清洗搞混,直接把原始数据发给我,做个统计吧,这个时候其实很大的工作量是在数据清洗和处理上,如果数据很杂乱,清洗起来是很费工夫的,反而清洗好的数据做统计分析常常就是一行代码的事情. ...

  6. 利用 kubeasz 给 suse 12 部署 kubernetes 1.20.1 集群

    文章目录 1.前情提要 2.环境准备 2.1.环境介绍 2.2.配置静态网络 2.3.配置ssh免密 2.4.批量开启模块以及创建文件 2.5.安装ansible 2.5.1.安装pip 2.5.2. ...

  7. 【程序员的实用工具推荐】 Mac 效率神器 Alfred

    Alfred 是一款功能非常强大,能有效提升 Mac 电脑使用效率的神器.可以说有了 Alfred 你就基本上可以脱离鼠标实现各种操作.相比 Mac 自带的聚焦搜索,完全可以称得上拥有碾压性的优势. ...

  8. 突破限制,CSS font-variation 可变字体的魅力

    今天,在 CodePen 上看到一个很有意思的效果 -- GSAP 3 ETC Variable Font Wave,借助了 JS 动画库 GSAP 实现,一起来看看: 我寻思着能否使用 CSS 复刻 ...

  9. python虚拟环境与伪静态网页

    目录 一:python虚拟环境 1.本地虚拟环境 1.创建虚拟环境 2.venv表示虚拟环境标志 3.虚拟环境下载django 4.使用虚拟环境 二:伪静态(了解) 1.什么是伪静态网页? 2.为什么 ...

  10. 面试题(造火箭必备技能):请举例一个最有成就感的性能bug

    当前,绝大部分招聘都有性能要求或者把其作为加分项(会性能优先),哪怕你不是面试的性能,面试的时候可能会问性能,所以大家才会有"面试造火箭,进去拧螺丝"的共鸣.至于企业为什么重视性能 ...