【杭电多校2020】第五场1001.Tetrahedron
程序员文章站
2022-05-01 19:17:43
题目链接思路:首先预处理从一到n的所有倒数的平方和,分数取模用到逆元,注意预处理逆元时i*i要取模,不然会超出mod范围。h方的倒数等于abc方倒数的和,所以我们求期望的话从1到n的每一个数的平方的倒数都会出现,所以我们用之前预处理的从一到n的所有倒数的平方和乘上n分之一再乘上3(有三个数),再模mod即可。代码:#include#define int long long#define IOS ios::sync_with_stdio(false);c...
题目链接
思路:
首先预处理从一到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
上一篇: 如何使用Android唯一标识符
推荐阅读
-
【杭电多校2020】1005.Fibonacci Sum(数论,公式)
-
【杭电多校2020】第五场1001.Tetrahedron
-
【杭电多校2020】第二场1001.Total Eclipse(并查集)
-
HDU6759 Leading Robots(2020杭电多校训练第一场)
-
2020杭电多校第五场 1009 Paperfolding
-
2020杭电多校集训-Distinct Sub-palindromes
-
[杭电多校2020]第一场 1004 Distinct Sub-palindromes
-
杭电多校——第二场(题解)
-
2020多校第五场Paperfolding
-
2020多校第五场Boring Game