当前位置: 移动技术网 > 移动技术>移动开发>IOS > 【杭电多校2020】第五场1001.Tetrahedron

【杭电多校2020】第五场1001.Tetrahedron

2020年08月05日  | 移动技术网移动技术  | 我要评论

思路:

首先预处理从一到n的所有倒数的平方和,分数取模用到逆元,注意预处理逆元时i*i要取模,不然会超出mod范围。
h方的倒数等于abc方倒数的和,所以我们求期望的话从1到n的每一个数的平方的倒数都会出现,所以我们用之前预处理的从一到n的所有倒数的平方和乘上n分之一再乘上3(有三个数),再模mod即可。

代码:

#include<bits/stdc++.h> #define int long long #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); const int N=6e6+10; const int M=2e4+5; const double eps=1e-8; const int mod=998244353; const int inf=0x7fffffff; const double pi=3.1415926; using namespace std; int j[N]; int qpow(int a,int b) { int res=1; while(b) { if(b&1) res=res*a%mod; a=a*a%mod; b>>=1; } return res; } void init() { j[1]=1; for(int i=2;i<N;i++) { j[i]=(j[i-1]+qpow((i*i)%mod,mod-2))%mod; } } signed main() { IOS; int t; cin>>t; init(); while(t--) { int n; cin>>n; int res=(j[n]*qpow(n,mod-2)%mod)*3%mod; cout<<res<<endl; } return 0; } 

本文地址:https://blog.csdn.net/ACkingdom/article/details/107798073

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网