首页 > 编程语言 >求和式 (C++ 坑爹的<<,>>,%lld)

求和式 (C++ 坑爹的<<,>>,%lld)

时间:2022-10-25 12:10:24浏览次数:42  
标签:xor cout 坑爹 long int C++ ans include lld


求和式(x3)

题目描述

作为本场考试的第一题,你的任务十分简单:

给定长度为n的序列A[i],求所有A[i]xor A[j] (i<j)的值之和

 

输入

第一行一个整数N

接下来N行,第i行为A[i]

输出

所需的值

 

样例输入

3

7

3

5

样例输出

12

样例解释

7 xor 3+3 xor 5+7 xor 5 = 4+6+2 = 12

 

数据范围

对于40%的数据,N<=5000

对于100%的数据,N<=1000000


c++中的%lld千万别用啊 ,各种坑人!

统一用cout 

另外C++中(long long)(1<<k)

这里要转,不然必wa

千万要先乘,和别的数乘完不定什么数了……


本题是位运算分解成一位一位运算(重要性质)


#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<functional>
#include<algorithm>
using namespace std;
#define MAXN (100+10)
int n,a,c[MAXN][2]={0};// 1<<i =(0.1)
int main()
{
freopen("x3.in","r",stdin);
freopen("x3.out","w",stdout);

/* for (int i=0;i<=100;i++)
{
cout<<c[i][0]<<' '<<c[i][1]<<endl;
}
*/ long long ans=0;
scanf("%d",&n);
int len=0;
for (int i=1;i<=n;i++)
{
scanf("%d",&a);
int tot=-1;
int j=100;
while (j--) {c[++tot][a%2]++;a/=2;}



len=len<tot?tot:len;

}
/* for (int i=0;i<=100;i++)
{
cout<<c[i][0]<<' '<<c[i][1]<<endl;
}
*/
for (int i=0;i<=28;i++)
{
ans+=(long long)(1<<i)*(long long)c[i][1]*(long long)(n-c[i][1]);

// cout<<ans<<endl;
}


/*
for (int i=0;i<=len;i++) cout<<c[i][0]<<' '<<c[i][1]<<' '<<endl;
*/

// printf("%lld\n",ans);
cout<<ans<<endl;
// while (1);

return 0;
}






标签:xor,cout,坑爹,long,int,C++,ans,include,lld
From: https://blog.51cto.com/u_15724837/5794389

相关文章

  • c++ accumulate
    用于累加数组元素普通用法:accumulate(首指针,末指针,累加初始值)除了对数字求和还可以连接字符串#include<bits/stdc++.h>usingnamespacestd;vector<string>v;vector<i......
  • C++/C 规范:命名规范和注释
    变量变量命名里面只能是名词,不能有动词宏:全部大写,如:FRAME_SIZE变量:驼峰命名规则,首个单词小写,如:myFrameSize全局变量:在变量前后添加字母G,如:myFrameSizeG函数尽量......
  • C++ 不知树系列之初识树(树的邻接矩阵、双亲孩子表示法……)
    1.前言树是一种很重要的数据结构,最初对数据结构的定义就是指对树和图的研究,后来才广义化了数据结构这个概念。从而可看出树和图在数结构这一研究领域的重要性。树和图重......
  • C++ Multi Thread
    自定义LockclassReadLock{public:ReadLock(ZoneFile*zfile):zfile_(zfile){zfile_->writer_mtx_.lock();zfile_->readers_++;zfil......
  • C++ Class
    类class与struct为什么c++里面经常定义struct?利用struct默认访问修饰符为public的特性,属性static成员#include<iostream>usingstd::cout;usingstd::endl;clas......
  • C++_函数指针/回调函数/std::function/std::bind
    类成员函数指针指向类中的非静态成员函数#include<iostream>#include<functional>#include<algorithm>#include<vector>usingnamespacestd;//函数指针指向一......
  • C++ 逻辑运算符
    //逻辑运算符inta=5;intb=20;if(a&&b){cout<<"Line1-条件为真"<<endl;}if(a||b......
  • C++ 关系运算符
    //关系运算符inta=21;intb=10;intc;if(a==b){cout<<"Line1-a等于b"<<endl;......
  • C++ 算术运算符号
    //算术运算符号inta=10;intb=2;intc=3;//+加法cout<<"a+b="<<a+b<<endl;//-减法cout<<"a-b=......
  • 实验3 数组、指针与现代C++标准库
    实验任务5:info.hpp:#include<iostream>#include<string>usingnamespacestd;classinfo{public:info(stringni,stringco,stringci,intn);voidpri......