SPOJ 25773 BITDIFF
来源:互联网 发布:淘宝cd 编辑:程序博客网 时间:2024/05/24 03:22
Description
给出n个整数a[i],定义两个整数的位差为两个数的二进制表示中对应位不相同的数量,求n个数中任意两个数的位差之和
Input
第一行一整数T表示用例组数,每组用例输入一整数n,之后输入n个整数a[i] (1<=T<=100,1<=n<=10000)
Output
输出n个数中任意两个数的位差之和,结果模10000007
Sample Input
1
4
3 2 1 4
Sample Output
Case 1: 22
Solution
dp[i][0]和dp[i][1]表示第i位是0和1的数的个数,那么sum{ 2*dp[i][0]*dp[i][1] }即为答案
Code
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<queue>#include<map>#include<set>#include<ctime>using namespace std;typedef long long ll;#define INF 0x3f3f3f3f#define maxn 11111#define mod 10000007int res=1,T,n,a,dp[44][2];int main(){ scanf("%d",&T); while(T--) { scanf("%d",&n); memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++) { scanf("%d",&a); for(int j=0;j<40;j++)dp[j][a%2]++,a/=2; } ll ans=0; for(int i=0;i<40;i++)ans=(ans+2ll*dp[i][0]*dp[i][1]%mod)%mod; printf("Case %d: %d\n",res++,ans); } return 0;}
阅读全文
0 0
- SPOJ 25773 BITDIFF
- SPOJ
- SPOJ
- SPOJ
- SPOJ
- SPOJ
- SPOJ
- SPOJ
- SPOJ
- SPOJ
- SPOJ
- SPOJ
- SPOJ
- SPOJ
- SPOJ
- SPOJ
- SPOJ
- SPOJ
- 使用Apache Commons CLI开发命令行工具
- input[file]标签的属性响应很慢的解决办法
- IS08583报文协议包的解析和封装java源代码
- Python3 根据关键字爬取百度图片
- 处理一个netty异常
- SPOJ 25773 BITDIFF
- shell下的命令代替
- css中可继承属性和不可继承属性
- cocos2dx基本概念(六)控件库
- 文章标题
- hdu-4348-To the moon(主席树更新,区间更新,区间和查询,保存历史版本返回)
- Linux POSIX 消息队列
- android dwg图纸解决方案
- 【Java TCP/IP Socket】构建和解析自定义协议消息(含代码)