题意:

给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);
}
}

最新文章

  1. mysqldump数据库同步遇到的问题
  2. git 最基本的使用方法
  3. route命令
  4. 【转】malloc与free的底层实现
  5. js 函数提升和变量提升
  6. 如果公司里有上百个表要做触发器,如果手动写代码的话。很累,所以今天写了一个小程序,自动生成mysql的触发代码。
  7. mv命令
  8. VC++制作DLL详解
  9. SSH 正向/反向代理小记
  10. Android的Handler与Activity线程同步
  11. centos6 install mplayer(multimedia)
  12. IOS深入学习(12)之Archiving
  13. ubuntu安装wine之后进不了系统
  14. Java中代理对象的使用小结
  15. 100_remove-duplicates-from-sorted-array
  16. React Native之使用导航器跳转页面(react-navigation)
  17. keepalived安装与配置,组建高可用服务器
  18. 支持向量机(SVM)
  19. PHP 进行支付宝开发中return_url和notify_url的区别分析
  20. tp5安装验证码

热门文章

  1. PAT Basic 1050
  2. git2--常用命令
  3. Python小课题练习作业
  4. Java-将字符串转为数字
  5. 面试准备——redis
  6. 【LeetCode】To Lower Case(转换成小写字母)
  7. .NET重构(六):删除用户和结账的理解
  8. SPOJ-New Distinct Substrings,注意会爆int
  9. 算法复习——splay+启发式合并(bzoj2733-永无乡)
  10. hibernate的cascade问题