Wannafly挑战赛18B 随机数


设\(f_i\)表示生成\(i\)个数有奇数个1的概率。

那么显而易见的递推式:\(f_i=p(1-f_{i-1})+(1-p)f_{i-1}=(1-2p)f_{i-1}+p\)

简化一下,设\(A=1-2p,B=p\)则\(f_i=A\times f_{i-1}+B\)

大力拆。。。\(f_n=Af_{n-1}+B=A(Af_{n-2}+B)+B=A(A(Af_{n-3}+B)+B)+B...\)

最后\(f_n=\underbrace{(A(A(A(\cdots(A}_{\text{n个}}f_0+B)+B)\cdots +B)+B=B(1+A+A^2\cdots A^{n-2}+A^{n-1})\)

等比数列求和即可

最后\(A^n\)的\(n\)可以降幂变成\(A^{n\text{ mod }(P-1)}\)

注意\(A=1\)的特判

#include<bits/stdc++.h>
#define il inline
#define vd void
typedef long long ll;
#define mod 1000000007
il int gi(){
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-')f=-1;
ch=getchar();
}
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
return x*f;
}
ll a,n,len,A,B,s;
char N[1000010];
il ll pow(ll x,ll y){
ll ret=1;
while(y){
if(y&1)ret=ret*x%mod;
x=x*x%mod;y>>=1;
}
return ret;
}
il ll inv(ll x){
ll ret=1,y=mod-2;
while(y){
if(y&1)ret=ret*x%mod;
x=x*x%mod;y>>=1;
}
return ret;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("129b.in","r",stdin);
freopen("129b.out","w",stdout);
#endif
a=gi();
scanf("%s",N+1);len=strlen(N+1);
if(a==5000)s=mod;
else s=mod-1;
for(int i=1;i<=len;++i)n=(n*10+N[i]-'0')%s;
B=a*inv(10000)%mod,A=(mod+mod+1-B-B)%mod;
if(a==5000)printf("%lld\n",(A*B%mod*n%mod+B)%mod);
else printf("%lld\n",B*(mod+pow(A,n)-1)%mod*inv(A-1)%mod);
return 0;
}

最新文章

  1. 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.1
  2. maven install时报错Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile
  3. 创建型模式之Builder模式及实现
  4. VIM键盘快捷键映射
  5. HOG 梯度方向直方图简介(转载)
  6. Spark RDD概念学习系列之RDD的操作(七)
  7. 关于Tesseract3.01的使用方法
  8. [Fw]人和人之间在八小时之外的差别
  9. Sass函数--map
  10. SuperSpider——打造功能强大的爬虫利器
  11. linux select函数 shutdown函数
  12. vbs 获取当前目录的实现代码
  13. js调取本地可执行文件exe
  14. vue- 项目之前端页面搭建1
  15. 不安全的HTTP方法(渗透实验)
  16. Bootstrap滚动监控器
  17. Jmeter关于断言
  18. django中使用mysql数据库的事务
  19. android adb命令 unable to connect to 192.168.1.155:5555
  20. Activity的启动模式详解

热门文章

  1. MySQL &#183; 数据恢复 &#183; undrop-for-innodb
  2. 026.3 网络编程 TCP聊天
  3. php操作redis的两个个小脚本
  4. Ubuntu eclipse安装
  5. 处理Account locked due to 217 failed logins的问题
  6. 洛谷 P4011 孤岛营救问题【最短路+分层图】
  7. ASP.NET Core读取appsettings.json配置文件信息
  8. js中css样式兼容各个浏览器写法
  9. 针对IE及其它的css hack
  10. ls: Call From hdoop2/192.168.18.87 to hdoop2:8020 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see