求 $\sum_{i=L}^{R}\sum_{i'=L}^{R}....[gcd_{i=1}^{n}(i)==k]$
 
$\Rightarrow \sum_{i=\frac{L}{k}}^{\frac{R}{k}}\sum_{i'=\frac{L}{k}}^{\frac{R}{k}}....[gcd_{i=1}^{n}(i)==1]$
 
$\Rightarrow \sum_{i=\frac{L}{k}}^{\frac{R}{k}}\sum_{i'=\frac{L}{k}}^{\frac{R}{k}}....\sum_{d|gcd_{i=1}^{n}(i)}\mu(d)$
 
$\Rightarrow\sum_{d=1}^{\frac{R}{d}}\mu(d)(\left \lfloor \frac{R}{kd} \right \rfloor-\left \lfloor \frac{L-1}{kd} \right \rfloor)^n$
 
用杜教筛算莫比乌斯函数前缀和,整除分块算一下就行.
#include<bits/stdc++.h>
#define maxn 1040000
#define M 1000001
#define inf 0x7f7f7f7f
#define ll long long
using namespace std;
ll mod = 1000000007;
void setIO(string s)
{
string in=s+".in";
freopen(in.c_str(),"r",stdin);
}
map<int,ll>ansmu;
int cnt;
bool vis[maxn];
int prime[maxn], mu[maxn];
ll sumv[maxn];
ll qpow(ll base,ll k)
{
ll tmp=1;
while(k)
{
if(k&1) tmp=tmp*base%mod;
base=base*base%mod;
k>>=1;
}
return tmp;
}
void Linear_shaker()
{
mu[1]=1;
int i,j;
for(i=2;i<=M;++i)
{
if(!vis[i]) prime[++cnt]=i, mu[i]=-1;
for(j=1;j<=cnt&&1ll*i*prime[j]<=M;++j)
{
vis[i*prime[j]]=1;
if(i%prime[j]==0)
{
mu[i*prime[j]]=0;
break;
}
mu[i*prime[j]]=-mu[i];
}
}
for(i=1;i<=M;++i) sumv[i]=(sumv[i-1]+mu[i]+mod)%mod;
}
ll get(ll n)
{
if(n<=M) return sumv[n];
if(ansmu[n]) return ansmu[n];
ll i,j,re=0;
for(i=2;i<=n;i=j+1)
{
j=(n/(n/i));
re=(re+(j-i+1)%mod*get(n/i)%mod+mod)%mod;
}
return ansmu[n]=(1ll-re+mod)%mod;
}
int main()
{
// setIO("input");
ll n,k,L,R,i,j,re=0;
scanf("%lld%lld%lld%lld",&n,&k,&L,&R);
L = (L - 1) / k, R = R / k;
Linear_shaker();
for(i=1;i<=R;i=j+1)
{
j=min(R/(R/i), L/i?L/(L/i):inf);
re=(re+qpow(R/i-L/i, n) * (get(j)-get(i-1)+mod)%mod)%mod;
}
printf("%lld\n",re);
return 0;
}

  

最新文章

  1. 多个div同时居中的写法
  2. same story,different day
  3. Android进程间通信之LocalSocket通信
  4. c#之委托总结
  5. 基于C#的钉钉SDK开发(1)--对官方SDK的重构优化
  6. PageHelper补充
  7. Java并发编程的艺术&#183; 笔记(1)
  8. 1—ARM中的寄存器
  9. OO第一次博客作业(第一单元总结)
  10. Robot Framework - 一些练习
  11. 【pyqtgraph绘图】安装pyqtgraph
  12. 将NetBIOS名称解析为IP地址的常用方法
  13. 使用jstl报错:According to TLD or attribute directive in tag file, attribute value does not accept any expressions
  14. 微服务深入浅出(3)-- 服务的注册和发现Eureka
  15. java面试第九天
  16. Hdu5693 D Game
  17. Keras自定义评估函数
  18. sar详解(linux/unix通用)
  19. MicroPython (一)点亮我的Led
  20. redis问题集

热门文章

  1. Delphi XE2 之 FireMonkey 入门(20) - TStyleBook(皮肤、样式相关)
  2. Jenkins简介&amp;邮箱配置
  3. Vue+Java实现在页面树形展示文件目录
  4. 基于nginx实现二维码下载安装apk文件
  5. spring包
  6. Python基础-7.1字符串的格式化
  7. python列表-简单操作
  8. [Web 前端] 004 html 小练习
  9. HDU-6187.DestroyWalls(最大生成树)
  10. 打开虚拟机提示 无法获得vmci 驱动程序的版本:句柄无效