Time Limit: 10 Sec  Memory Limit: 512 MBSec  Special Judge
Submit: 215  Solved: 112

Description

Input

Output

Sample Input

3 0.5

Sample Output

2.000000

HINT

1<=N<=10^18

Source

加密和不加密各自是独立问题

后者是炒鸡麻烦的数位DP

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define LL long long
using namespace std;
const int mxn=;
LL n;
LL b[];
double p;
int len;
double pw(){//加密
double res=;
for(int i=;i<len;i++){
double L=(n/(1LL<<(i+)))*(double)(1LL<<i);
//高位取遍所有情况,当前位为0,低位无限制
double R=(max(0LL,n%(1LL<<(i+))-(1LL<<i)));
//高位为极限,当前位为1,低位不超限
L=(L+R)/n;
res+=L*(-L)**(1LL<<i);
//取对立情况使得该位异或和为1的期望*贡献 x,y交换是另一种情况,所以*2
}
return res;
}
double f[];
double npw(){//未加密
n--;//右侧开区间
double res=;
if(n&)f[]=;else f[]=;
f[]/=(n+);
LL m=n;
int i,j;
for(i=;i<len-;i++){
if((n>>i)&)f[i]=f[i-]+(double)b[i]/(n+)*b[i]*+(double)(b[i]-)*1.0/(n+)*b[i];
else f[i]=f[i-]*+(b[i])/(double)(n+)*(b[i]);
}
for(int i=len-;i>=;i--){
if((n>>i)&){//x可以取1
if((m>>i)&){//y可以取1
res+=(b[i+]-)*(double)(m+-(b[i]))/(n+);
m=(b[i])-;
}
res+=b[i]*(double)(m+)/(n+);
}
else{
if((m>>i)&){
res+=(b[i])*(double)(m+-(b[i]))/(n+);
m^=(b[i]);
res+=i->=?f[i-]:;
}
}
}
n++;
return res;
}
int main(){
int i,j;
scanf("%lld%lf",&n,&p);
len=;
while((1LL<<len)<=n)++len;
for(i=;i<=len;i++)b[i]=1LL<<i;
printf("%.8f\n",npw()*p+pw()*(-p));
return ;
}

最新文章

  1. kd树和knn算法的c语言实现
  2. yii asset 初步
  3. maven全局配置文件settings.xml详解
  4. php 错误
  5. 怎么利用javascript删除字符串中的最后一个字符呢?
  6. ASP.NET 成功执行Update 的 ExecuteNonQuery() 返回值大于0,但是查看数据库却没有改变
  7. ASP.Net将图片以二进制方式存入数据库,并读取
  8. Inno Setup 网页显示插件 webctrl (V2.1 版本)
  9. HDU1372:Knight Moves(BFS)
  10. 如何通过织云 Lite 愉快地玩转 TSW
  11. 关于JavaScript(脚本语言)
  12. Powershell远程执行命令
  13. [转帖]HPE的软件部分到底是谁的?
  14. Java设计模式从精通到入门五 抽象工厂方法模式
  15. 使用Axure RP原型设计实践05,了解公式
  16. Total Commander如何设置自定义快捷键在当前目录打开ConEmu
  17. jenkins的时间与服务器的时间不一致
  18. Python数据分析工具库-Numpy 数组支持库(一)
  19. C# 关于JArray和JObject封装JSON对象
  20. 20155229 2016-2017-2《Java程序设计》课程总结

热门文章

  1. Mysql--select基础查询
  2. 揭密 Vue 的双向绑定
  3. React学习记录二
  4. Python周末21天笔记
  5. 使用HTTP协议访问网络
  6. IQueryable与IEnumerable区别
  7. main方法中sleep
  8. #include &quot;*.c&quot;文件的妙用
  9. IOS开发---菜鸟学习之路--(八)-实现新闻页面
  10. Python-S9-Day124-爬虫&amp;微信