hdu 5780 gcd(线性筛+快速幂+数论)
来源:互联网 发布:华数网络 编辑:程序博客网 时间:2024/05/06 18:04
题目描述
传送门
题目大意:
题解
首先对于
更相减损
那么
又因为
那么原始的式子就变成了
因为
这样可以
考虑对于
对于
代码
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define LL long long #define N 1000003#define p 1000000007using namespace std;int n,T,prime[N],pd[N],mu[N],SUM[N];LL a[N],x,ans,smu[N],phi[N];LL gcd(LL x,LL y){ LL r; while (y) { r=x%y; x=y; y=r; } return x;}void init(){ mu[1]=1; phi[1]=1; for (int i=2;i<=1000000;i++) { if (!pd[i]) { prime[++prime[0]]=i; mu[i]=-1; phi[i]=i-1; } for (int j=1;j<=prime[0];j++) { if (i*prime[j]>1000000) break; pd[i*prime[j]]=1; if (i%prime[j]==0) { mu[i*prime[j]]=0; phi[i*prime[j]]=phi[i]*prime[j]; break; } else { mu[i*prime[j]]=-mu[i]; phi[i*prime[j]]=phi[i]*(prime[j]-1); } } } for (int i=1;i<=1000000;i++) phi[i]=(phi[i]+phi[i-1])%p;}LL quickpow(LL num,int x){ LL ans=1; LL base=num%p; while (x) { if (x&1) ans=ans*base%p; x>>=1; base=base*base%p; } return ans;}int main(){ scanf("%d",&T); init(); while (T--) { scanf("%I64d%d",&x,&n); ans=0; int j=0; for (int i=1;i<=n;i=j+1) { j=min(n/(n/i),n); LL t=2*phi[n/i]-1; t%=p; LL a1=quickpow(x,i); LL q=quickpow(x,(j-i+1)); LL t1=a1*(q-1)%p*quickpow(x-1,p-2)%p-(j-i+1); //cout<<t<<" "<<t1<<endl; ans=(ans+t*t1%p)%p; } if (x==1) printf("0\n"); else printf("%I64d\n",(ans%p+p)%p); }}
0 0
- hdu 5780 gcd(线性筛+快速幂+数论)
- HDU 5780 gcd(数论)
- 线性筛法 gcd 快速幂
- BZOJ_P2818 GCD(数论GCD+欧拉函数线性筛)
- 【数论】gcd|扩展gcd|素数筛法|快速幂|欧拉函数(各种模板)
- 四一。 数论 。4.19(gcd 扩展gcd,素数 ,快速幂)
- Hdu 4497 GCD and LCM(数论)
- HDU 1108 最小公倍数(Gcd 数论)
- HDU 1695 GCD 数论
- HDU 1695 GCD (数论)
- 数论知识总结(乘法逆元,欧拉函数,线性筛,快速幂,快速乘等)
- HDU - 4497 - GCD and LCM (线性筛素数 + 计数)
- HDU 2256 Problem of Precision(矩阵快速幂 数论 )
- HDU 5667 Sequence(数论+矩阵快速幂)
- 数论(快速幂) HDU-5690 All X
- hdu 2197 本原串(数论+快速幂)
- HDU 5780 BestCoder Round #85 gcd (数论---欧拉函数)
- HDU 4676 Sum Of Gcd【数论,数据结构(分块)】
- java指定若干个网络图片,打包为zip下载
- 解决MapperReduce在实际应用中产生的数据倾斜问题
- C#用副线程改主线程(UI线程)的控件属性的方法(包括Winform和WPF)
- JSP中请求重定向和请求转发的区别
- H5的预加载
- hdu 5780 gcd(线性筛+快速幂+数论)
- JZOJ3736【NOI2014模拟7.11】数学题(math)
- springmvc 用拦截器+token防止重复提交
- 详解 Dagger2 系列,原来 Dagger2 如此简单
- maven 下载安装
- android源码解析(4)--如何结束运行中的分线程
- 3.13 判读是否是对称素数
- CentOS安装mysql
- iOS开发