请求他人对自己的代码进行 debug
查看原帖
请求他人对自己的代码进行 debug
1376088
tiantian0820楼主2025/7/20 08:44
#include<iostream>
#include<cstdio>
typedef  unsigned long long ul;
using namespace std;
//char buf[1<<23],*p1=buf,*p2=buf;
//#define gc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
#define gc() getchar()
inline unsigned long long rd() {//读入一个 64 位无符号整数
	unsigned long long x=0;
	char ch=gc();
	while(ch<'0' || ch>'9')ch=gc();
	while(ch>='0' && ch<='9') x=x*10+(ch^48),ch=gc();
	return x;
}
ul m[8];const ul t=0xff,tt=0x03ffffff;
unsigned long long h/*ash*/(ul p) {
for(int i=0;i<8;i++){
	ul f=(i<<3);
	m[i]=(t<<f);
	m[i]&=p;
	m[i]>>=f;
    m[i]+=(i*i*3+11+i*7);
} 
    // int x=0;
    //     x+=0xa8b7e63124905fcd;
    //     x=(x^(x>>30))*0xbf58476d1ce4e5b9;
    //     x=(x^(x>>27))*0x94d049bb133111eb;
    //     return x^(x>>31);
m[0]=m[0]&m[5]^m[6]^m[7];//
m[1]=m[1]^m[4]&m[6]|m[7];
m[2]=m[2]^m[4]|m[5]&m[7];
m[3]=m[3]|m[4]^m[5]^m[6];
m[0]<<=17;
m[1]<<=11;
m[2]<<=6;
m[0]^=( m[1]^ m[2] ^ m[3]);
return m[0]%(1<<25);
}ul n,hh[1<<25],x,y,a;
int main(){n=rd();
    for(ul i=1;i<=n;i++){
    	x=rd();y=rd();x=h(x);
//    	20
    	a+=i*hh[x];
    	hh[x]=y;
	}printf("%llu",a);
    return 0;
    
}
2025/7/20 08:44
加载中...