BZOJ4816: [Sdoi2017]数字表格
2017-12-10 16:52
246 查看
Description
Doris刚刚学习了fibonacci数列。用f[i]表示数列的第i项,那么
f[0]=0
f[1]=1
f
=f[n-1]+f[n-2],n>=2
Doris用老师的超级计算机生成了一个n×m的表格,第i行第j列的格子中的数是f[gcd(i,j)],其中gcd(i,j)表示i,
j的最大公约数。Doris的表格中共有n×m个数,她想知道这些数的乘积是多少。答案对10^9+7取模。
Input
有多组测试数据。
第一个一个数T,表示数据组数。
接下来T行,每行两个数n,m
T<=1000,1<=n,m<=10^6
Output
输出T行,第i行的数是第i组数据的结果
Sample Input
3
2 3
4 5
6 7
Sample Output
1
6
960
题目传送门
为了做这道题,我去学了读入优化
为了这道题,我复习了怎么样对拍
为了这道题,我托同学找了dsy的数据
SB出题人%%#%¥#@
我现在头脑有点昏
因为首先我没有接触过这种东西啊,这是莫比乌斯反演吗?
我熟悉的两种公式套上面TLE到死为止
然后看别人博客:
这个是什么啊??完全没接触过!!
%%%%%%大佬
错了数据都没用!
可怜我整整一版的TLE
代码如下:
by_lmy
Doris刚刚学习了fibonacci数列。用f[i]表示数列的第i项,那么
f[0]=0
f[1]=1
f
=f[n-1]+f[n-2],n>=2
Doris用老师的超级计算机生成了一个n×m的表格,第i行第j列的格子中的数是f[gcd(i,j)],其中gcd(i,j)表示i,
j的最大公约数。Doris的表格中共有n×m个数,她想知道这些数的乘积是多少。答案对10^9+7取模。
Input
有多组测试数据。
第一个一个数T,表示数据组数。
接下来T行,每行两个数n,m
T<=1000,1<=n,m<=10^6
Output
输出T行,第i行的数是第i组数据的结果
Sample Input
3
2 3
4 5
6 7
Sample Output
1
6
960
题目传送门
为了做这道题,我去学了读入优化
为了这道题,我复习了怎么样对拍
为了这道题,我托同学找了dsy的数据
SB出题人%%#%¥#@
我现在头脑有点昏
因为首先我没有接触过这种东西啊,这是莫比乌斯反演吗?
我熟悉的两种公式套上面TLE到死为止
然后看别人博客:
这个是什么啊??完全没接触过!!
%%%%%%大佬
错了数据都没用!
可怜我整整一版的TLE
代码如下:
#include<cmath> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> using namespace std; inline int read() { int x=0; char ch=getchar(); while(ch>'9'||ch<'0'< 4000 /span>)ch=getchar(); while(ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return x; } typedef long long ll; const int N=1000000+10,mod=1000000007; ll f ,fv ; int n, m; ll pow_mod(ll a, ll b) { ll ans=1; while(b) { if(b&1) ans=(ans*a)%mod; a=(a*a)%mod;b/=2; } return ans; } int main() { f[1]=1; for(int i=2;i<N;i++) f[i]=(f[i-1]+f[i-2])%mod; for(int i=1;i<N;i++) { ll inv=pow_mod(f[i],mod-2); for(int j=i+i;j<N;j+=i) f[j]=(f[j]*inv)%mod; } f[0]=1; for(int i=1;i<N;i++) f[i]=(f[i]*f[i-1])%mod; for(int i=0;i<N;i++) fv[i]=pow_mod(f[i],mod-2); int t=read(); ll ans; while(t--) { int n=read(),m=read(); if(n>m) swap(n,m); ans=1; for(int i=1,p;i<=n;i=p+1) { p=min(n/(n/i),m/(m/i)); ans=ans*pow_mod(pow_mod((f[p]*fv[i-1] % mod),(ll)n/i),(ll)m/i)%mod; } printf("%lld\n",ans); } return 0; }
by_lmy
相关文章推荐
- bzoj4816: [Sdoi2017]数字表格
- Bzoj4816: [Sdoi2017]数字表格
- [莫比乌斯反演] BZOJ4816: [Sdoi2017]数字表格
- Bzoj4816 [Sdoi2017]数字表格
- Bzoj4816: [Sdoi2017]数字表格
- bzoj4816: [Sdoi2017]数字表格
- BZOJ 4816 [Sdoi2017]数字表格
- [数论 反演]BZOJ4816 [Sdoi2017]数字表格
- bzoj 4816: [Sdoi2017]数字表格 莫比乌斯反演
- BZOJ 4816 [Sdoi2017]数字表格 ——莫比乌斯反演
- bzoj 4816: [Sdoi2017]数字表格【莫比乌斯反演+逆元】
- [BZOJ4816][SDOI2017]数字表格(反演)
- 4816: [Sdoi2017]数字表格
- 【bzoj4816】[Sdoi2017]数字表格 莫比乌斯反演
- 【BZOJ 4816】【SDOI 2017】数字表格
- 【BZOJ4816】[Sdoi2017]数字表格 莫比乌斯反演
- [bzoj4816] [Sdoi2017]数字表格
- 【jzoj100006】【SDOI2017】【数字表格】【数论】
- BZOJ 4816: [Sdoi2017]数字表格
- BZOJ.4816.[SDOI2017]数字表格(莫比乌斯反演)