02 0分不02 30分呜呜呜
查看原帖
02 0分不02 30分呜呜呜
394672
Alan_chaser楼主2024/3/15 23:52
#include<bits/stdc++.h>
using namespace std;
int n;
int rxa,rxc,rya,ryc,rza,rzc;
int rp=2333333;
struct dom{
	int num;
	double sum;
}lo[500][500];
double ans=0;
double xy[2];
void work(){
	cin>>n;
	cin>>rxa>>rxc>>rya>>ryc>>rza>>rzc;
	/*for(int i=1;i<=n;++i)
		cin>>xg[i]>>yg[i];*/
	int x=0,y=0,z=0;
	
	int di=0;
	for(int i=0;i<=50;++i)
		for(int j=0;j<=50;++j){
			lo[i][j].num=0;
			lo[i][j].sum=0;
		}
	for(int i=1;i<=n;++i){
		for(int j=1;j<=2;++j){
			/*int x1=x,y1=y,z1=z;*/
			x=(y*rxa+rxc)%rp;
			y=(z*rya+ryc)%rp;
			z=(x*rza+rzc)%rp;
			xy[j]=(x%20)*1.0+(y%10)*1.0/10.0+(z%10)*1.0/100.0;
		}//begin
		lo[int(xy[1])][int(xy[2])].sum+=(xy[1]+xy[2]);
		lo[int(xy[1])][int(xy[2])].num++;
	}
	for(int i=0;i<=20;++i)
		for(int j=0;j<=20;++j)
			for(int k=0;k<i;++k)
				for(int m=0;m<j;++m){
					di+=(double)lo[i][j].num*lo[k][m].num;
					ans+=lo[i][j].sum*lo[k][m].num-(double)lo[k][m].sum*lo[i][j].num;
				}
	if(n==1 || di==0){
		printf("0.00000");
		return;
	}
	ans/=di;
	printf("%0.5lf",ans);
	return;
}

int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int _=1;
	while(_--)work();
	return 0;
}
2024/3/15 23:52
加载中...