poj 3105 Expectation 按位统计
2024-09-08 07:06:32
题意:
给n,求sum(i^j)/(n^2),0<=i,j<n。n<10^9
分析:
暴力n^2算法肯定超时。这是logn按位统计算法:按位先算出0出现的个数x,则1出现的个数为n-x。再算每位对和的贡献。
代码:
//poj 3105
//sep9
#include <iostream>
using namespace std; int main()
{
int cases;
scanf("%d",&cases);
while(cases--){
int n;
double ans=0;
scanf("%d",&n);
for(int i=0;i<31;++i){
int s=1<<i;
double p=(((n-1)>>(i+1)<<i)+((n-1)&(s-1))+1)/(double)n;
ans+=2*p*(1-p)*s;
}
printf("%.2lf\n",ans);
}
}
最新文章
- mysqldump数据库同步遇到的问题
- git 最基本的使用方法
- route命令
- 【转】malloc与free的底层实现
- js 函数提升和变量提升
- 如果公司里有上百个表要做触发器,如果手动写代码的话。很累,所以今天写了一个小程序,自动生成mysql的触发代码。
- mv命令
- VC++制作DLL详解
- SSH 正向/反向代理小记
- Android的Handler与Activity线程同步
- centos6 install mplayer(multimedia)
- IOS深入学习(12)之Archiving
- ubuntu安装wine之后进不了系统
- Java中代理对象的使用小结
- 100_remove-duplicates-from-sorted-array
- React Native之使用导航器跳转页面(react-navigation)
- keepalived安装与配置,组建高可用服务器
- 支持向量机(SVM)
- PHP 进行支付宝开发中return_url和notify_url的区别分析
- tp5安装验证码