#转载题解
2025-02-11 19:36:41
发布于:浙江
12阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int n,rxa,rxc,rya,ryc,rza,rzc,rp=2333333,f[45][45];
long long x,y,z,num;
double mzx,mzy,a[45][45],b[45][45],ans;
int main(){
scanf("%d%d%d%d%d%d%d",&n,&rxa,&rxc,&rya,&ryc,&rza,&rzc);
for(register int i=1;i<=2*n;i++)
{
x=(y*rxa+rxc)%rp;
y=(z*rya+ryc)%rp;
z=(x*rza+rzc)%rp;
if(i%2==1)mzx=(double)(x%20)+((double)(y%10)/10.000000000)+((double)(z%10)/100.00000000);
else
{
mzy=(double)(x%20)+((double)(y%10)/10.000000000)+((double)(z%10)/100.00000000);
/*rt*/
a[(int)mzx][(int)mzy]+=mzx;
b[(int)mzx][(int)mzy]+=mzy;
/*求和,也可以取平均值*/
f[(int)mzx][(int)mzy]++;
}
}
for(register int i=0;i<=20;i++)
for(register int j=0;j<=20;j++)
for(register int k=i+1;k<=20;k++)
for(register int l=j+1;l<=20;l++){
ans+=(a[k][l]+b[k][l])*(double)f[i][j]-(a[i][j]+b[i][j])*(double)f[k][l];
num+=f[i][j]*f[k][l];
}//按要求来就是了
printf("%.5f",ans/num);
}
这题刚刚看一下:不就是一道枚举吗?
后来发现:好像会超时耶
于是:加优化!
将一幢楼里的妹子看做一个集合,只要将每幢楼里的妹子横,纵坐标求和然后按要求来就行了
#转载自洛谷AoPSer
创建时间:2021-12-26 08:02
感谢
全部评论 1
有经过作者允许吗???你就转载
2025-06-15 来自 北京
0
有帮助,赞一个