#2023. 「AHOI / HNOI2017」抛硬币

 

题目描述

小 A 和小 B 是一对好朋友,他们经常一起愉快的玩耍。最近小 B 沉迷于**师手游,天天刷本,根本无心搞学习。但是已经入坑了几个月,却一次都没有抽到 SSR,让他非常怀疑人生。

勤勉的小 A 为了劝说小 B 早日脱坑,认真学习,决定以抛硬币的形式让小 B 明白他是一个彻彻底底的非洲人,从而对这个游戏绝望。两个人同时抛 bbb 次硬币,如果小 A 的正面朝上的次数大于小 B 正面朝上的次数,则小 A 获胜。

但事实上,小 A 也曾经沉迷过拉拉游戏,而且他一次 UR 也没有抽到过,所以他对于自己的运气也没有太大把握。所以他决定在小 B 没注意的时候作弊,悄悄地多抛几次硬币,当然,为了不让小 B 怀疑,他不会抛太多次。现在小 A 想问你,在多少种可能的情况下,他能够胜过小 B 呢?由于答案可能太大,所以你只需要输出答案在十进制表示下的最后 kkk位即可。

输入格式

有多组数据,对于每组数据输入三个数 a,b,ka, b, ka,b,k,分别代表小 A 抛硬币的次数,小 B 抛硬币的次数,以及最终答案保留多少位整数。

输出格式

对于每组数据,输出一个数,表示最终答案的最后 kkk 位为多少,若不足 kkk 位以 000 补全。

样例

样例输入

2 1 9
3 2 1

样例输出

000000004
6

样例解释

对于第一组数据,当小 A 抛 222 次硬币,小 B 抛 111 次硬币时,共有 444 种方案使得小 A 正面朝上的次数比小 B 多。

(01,0),(10,0),(11,0),(11,1) (01,0), (10,0), (11,0), (11,1)(01,0),(10,0),(11,0),(11,1)

对于第二组数据,当小 A 抛 333 次硬币,小 B 抛 222 次硬币时,共有 161616 种方案使得小 A 正面朝上的次数比小B多。

(001,00),(010,00),(100,00),(011,00),(101,00),(110,00),(111,00),(011,01)(101,01),(110,01),(111,01),(011,10),(101,10),(110,10),(111,10),(111,11) \begin{aligned} (001,00), (010,00), (100,00), (011,00), (101,00), (110,00), (111,00), (011,01)\\ (101,01), (110,01),(111,01), (011,10), (101,10), (110,10), (111,10), (111,11) \end{aligned}​(001,00),(010,00),(100,00),(011,00),(101,00),(110,00),(111,00),(011,01)​(101,01),(110,01),(111,01),(011,10),(101,10),(110,10),(111,10),(111,11)​​

数据范围与提示

对于 10%10\%10% 的数据,a,b≤20a,b\le 20a,b≤20;
对于 30%30\%30% 的数据,a,b≤100a,b\le 100a,b≤100;
对于 70%70\%70% 的数据,a,b≤100000a,b\le 100000a,b≤100000,其中有 20%20\%20% 的数据满足 a=ba=ba=b;
对于 100%100\%100% 的数据,1≤a,b≤1015,b≤a≤b+10000,1≤k≤91\le a,b\le {10}^{15}, b\le a\le b+10000, 1\le k\le 91≤a,b≤10​15​​,b≤a≤b+10000,1≤k≤9,数据组数小于等于 101010。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a,b,k,f[][],mod=,w[];
void prepare(){
f[][]=;
for(int i=;i<=;i++){
f[i][]=f[i][i]=;
for(int j=;j<i;j++)
f[i][j]=(f[i-][j]+f[i-][j-])%mod;
}
}
int main(){
while(scanf("%d%d%d",&a,&b,&k)!=EOF){
mod=;
for(int i=;i<=k;i++)mod*=;
prepare();
int c=max(a,b);
int ans=;
for(int i=;i<=a;i++)
for(int j=;j<i;j++){
ans+=1LL*f[a][i]*f[b][j]%mod;
if(ans>=mod)ans-=mod;
}
int cnt=;
memset(w,,sizeof(w));
while(ans){
w[++cnt]=ans%;
ans/=;
}
for(int i=k;i>=;i--)printf("%d",w[i]);
puts("");
}
return ;
}

30分 暴力组合数

#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
#define INF 1000000001
using namespace std;
ll a,b,K,mod,mod2,mod5,v[][];
ll Pow(ll x,ll y,ll p){
ll res=;
while(y){
if(y&)res=res*x%p;
x=x*x%p;
y>>=;
}
return res;
}
void init(ll k,ll mx){
ll type=(k!=);
v[type][]=;
for(ll i=;i<=mx;i++){
if(i%k)v[type][i]=v[type][i-]*i%mx;
else v[type][i]=v[type][i-];
}
}
void exgcd(ll a,ll b,ll &x,ll &y){
if(!b)x=,y=;
else exgcd(b,a%b,y,x),y-=a/b*x;
}
ll inv(ll a,ll p){
ll x,y;exgcd(a,p,x,y);
return (x%p+p)%p;
}
ll mul(ll n,ll p,ll pk){
if(!n)return ;
ll res=Pow(v[p!=][pk],n/pk,pk)*v[p!=][n%pk]%pk;
return res*mul(n/p,p,pk)%pk;
}
ll C(ll n,ll m,ll p,ll pk,ll fg){
if(n<m)return ;
ll cnt=;
for(ll i=n;i;i/=p)cnt+=i/p;
for(ll i=m;i;i/=p)cnt-=i/p;
for(ll i=(n-m);i;i/=p)cnt-=i/p;
if(p==&&fg)cnt--;
if(cnt>=K)return ;
ll s1=mul(n,p,pk),s2=mul(m,p,pk),s3=mul(n-m,p,pk);
ll res=Pow(p,cnt,pk)*s1%pk*inv(s2,pk)%pk*inv(s3,pk)%pk;
if(p==&&fg)res=res*inv(,pk)%pk;
return res*(mod/pk)%mod*inv(mod/pk,pk)%mod;
}
ll Lucas(ll n,ll m,ll fg){
return (C(n,m,,mod2,fg)+C(n,m,,mod5,fg))%mod;
}
int main(){
init(,);init(,);
while(cin>>a>>b>>K){
mod2=Pow(,K,INF);mod5=Pow(,K,INF);mod=Pow(,K,INF);
ll ans=Pow(,a+b-,mod);
if(a==b)ans=(ans-Lucas(a+b,a,)+mod)%mod;
else {
for(ll i=(a+b)/+;i<a;i++)ans=(ans+Lucas(a+b,i,))%mod;
if(!((a+b)%))ans=(ans+Lucas(a+b,(a+b)/,))%mod;
}
while(ans<mod/)mod/=,printf("");
printf("%lld\n",ans);
}
return ;
}

100分 exLucas

loj #2023. 「AHOI / HNOI2017」抛硬币的更多相关文章

  1. loj#2020 「AHOI / HNOI2017」礼物 ntt

    loj#2020 「AHOI / HNOI2017」礼物 链接 bzoj没\(letex\),差评 loj luogu 思路 最小化\(\sum\limits_1^n(a_i-b_i)^2\) 设改变 ...

  2. [LOJ 2022]「AHOI / HNOI2017」队长快跑

    [LOJ 2022]「AHOI / HNOI2017」队长快跑 链接 链接 题解 不难看出,除了影响到起点和终点的射线以外,射线的角度没有意义,因为如果一定要从该射线的射出一侧过去,必然会撞到射线 因 ...

  3. loj #2021. 「AHOI / HNOI2017」大佬

    #2021. 「AHOI / HNOI2017」大佬   题目描述 人们总是难免会碰到大佬.他们趾高气昂地谈论凡人不能理解的算法和数据结构,走到任何一个地方,大佬的气场就能让周围的人吓得瑟瑟发抖,不敢 ...

  4. LOJ#2019. 「AHOI / HNOI2017」影魔

    题意: 在一个序列中 如果有一个子区间 它有一个端点是区间最大值 另一个端点不是这个区间的次大值 就会有p2的贡献 它两个端点分别是最大值次大值 就会有p1的贡献 我们发现这两个条件有一个重合的部分 ...

  5. loj#2020. 「AHOI / HNOI2017」礼物

    题意:给定xy数组求 \(\sum_{i=0}^{n-1}(x_i+y_{(i+k)\modn}+c)^2\) 题解:先化简可得 \(n*c^2+2*\sum_{i=0}^{n-1}x_i-y_i+\ ...

  6. Loj #2495. 「AHOI / HNOI2018」转盘

    Loj #2495. 「AHOI / HNOI2018」转盘 题目描述 一次小 G 和小 H 原本准备去聚餐,但由于太麻烦了于是题面简化如下: 一个转盘上有摆成一圈的 \(n\) 个物品(编号 \(1 ...

  7. Loj #2494. 「AHOI / HNOI2018」寻宝游戏

    Loj #2494. 「AHOI / HNOI2018」寻宝游戏 题目描述 某大学每年都会有一次 Mystery Hunt 的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得 ...

  8. 「AHOI / HNOI2017」单旋

    「AHOI / HNOI2017」单旋 题目链接 H 国是一个热爱写代码的国家,那里的人们很小去学校学习写各种各样的数据结构.伸展树(splay)是一种数据结构,因为代码好写,功能多,效率高,掌握这种 ...

  9. 「AHOI / HNOI2017」影魔

    「AHOI / HNOI2017」影魔 题目描述 解决这类比较复杂的区间贡献问题关键在于找到计算的对象. 比如这道题,我们计算的对象就是区间中间的最大值. 对于点\(i\),我们找到左边第一个比他大的 ...

随机推荐

  1. DCloud-5+Runtime:杂项

    ylbtech-DCloud-5+Runtime:杂项 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   7.返回顶部   8.返回顶部 ...

  2. mycat 分片

    1  配置下面两种ER分片,并结合日志分析子表插入过程中的不同 (1).父表按照主键ID分片,子表的分片字段与主表ID关联,配置为ER分片 (2).父表的分片字段为其他字段,子表的分片字段与主表ID关 ...

  3. Oracle OCM提纲

    ocm提纲 数据库创建详解 ◆ 通过手动方式创建数据库 环境变量的设置 密码文件的创建过程以及使用情景 Oracle数据库中参数文件的演进过程 参数文件的对比 参数的修改方式介绍 数据库启动过程时的内 ...

  4. final,finally和finalize三者的区别和联系

    对于初学者而言(当然也包括我)对于这三者真的不是很陌生,经常会看到它们.但对于三者之间的区别和联系一直是懵懵懂~~ 今天心情不错,那就简单总结一下它们几个的区别和联系吧.如果又不对的地方欢迎批评指正~ ...

  5. js查看对象内容

    function show_obj(obj){ var temp,p1Str=""; for(temp in obj){ p1Str=p1Str+temp+":" ...

  6. 自定义数据校验(4)---demo3---bai

    工具类:CharUtil package com.etc.util; import java.util.regex.Pattern; public class CharUtil { public st ...

  7. Json-lib 进行java与json字符串转换之一

    这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下. 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.J ...

  8. jackson 进行json与java对象转换 之二

    主要用于测试学习用jackson包实现json.对象.Map之间的转换. 1.准备测试用的Java类 (1)Link类 package test; /** * Description: 联系方式,被u ...

  9. 关于WebGIS开源解决方案的探讨(转)

    关于WebGIS开源解决方案的探讨   文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 公司目前的多数项目采 ...

  10. No bean class specified on bean definition 解决方案

    调试Spring项目出现No bean class specified on bean definition异常 但是控制台并没有给出其他相关信息了 这个时候可以在AbstractBeanDefini ...