2019-ACM-ICPC-南京区网络赛-E. K Sum-杜教筛+欧拉定理


【Problem Description】

令\(f_n(k)=\sum_{l_1=1}^n\sum_{l_2=1}^n\dots\sum_{l_k=1}^n gcd(l_1,l_2,\dots,l_k)\)。求\(\sum_{i=2}^kf_n(i)\ mod \ (10^9+7)\)。

【Solution】

对于\(f_n(k)\)有:

\[\sum_{l_1=1}^n\sum_{l_2=1}^n\dots\sum_{l_k=1}^ngcd(l_1,l_2,\dots,l_k)=\sum_{d=1}^n\sum_{l_1=1}^{\frac{n}{d}}\sum_{l_2=1}^{\frac{n}{d}}\dots\sum_{l_k=1}^{\frac{n}{d}}[gcd(l_1,l_2,\dots,l_k)=1]\cdot d^2
\\=\sum_{d=1}^nd^2\sum_{t=1}^{n}\mu(t)\sum_{l_1=1}^{\frac{n}{dt}}\sum_{l_2=1}^{\frac{n}{dt}}\dots\sum_{l_k=1}^{\frac{n}{dt}}=\sum_{d=1}^nd^2\sum_{t=1}^n\mu(t)\lfloor\frac{n}{dt}\rfloor^k
\]

令\(T=dt\)得:

\[f_n(k)=\sum_{T=1}^{n}\sum_{t|T}\mu(t)\cdot\frac{T^2}{t^2}\cdot \lfloor\frac{n}{T}\rfloor^k
\]

则\(\sum_{i=2}^kf_n(i)\)为:

\[\sum_{i=2}^kf_n(i)=\sum_{i=2}^k\sum_{T=1}^n\sum_{t|T}\mu(t)\cdot \frac{T^2}{t^2}\cdot \lfloor\frac{n}{T}\rfloor^k=\sum_{T=1}^n\sum_{t|T}\mu(t)\frac{T^2}{t^2}\sum_{i=2}^k\lfloor\frac{n}{T}\rfloor^k
\\=\sum_{T=1}^n\sum_{t|T}\mu(t)\frac{T^2}{t^2}\Big(\frac{\lfloor\frac{n}{T}\rfloor^{k+1}-1}{\lfloor\frac{n}{T}\rfloor-1}-\lfloor\frac{n}{T}\rfloor-1\Big)
\]

因为\(k\le 10^{10^5}\),所以用欧拉定理降幂取模即可。注意特判\(\lfloor \frac{n}{T}\rfloor=1\)的情况。

其中令\(g(T)=\sum_{t|T}\mu(t)\cdot \frac{T^2}{t^2},\Phi(n)=\sum_{T=1}^ng(T)\)。对于\(T\)小的部分可以通过线性筛求得:

  1. 当\(T\)为素数时,\(g(T)=T^2-1\)。
  2. 若\(T\)中无平方质因子时\(T=p_1\cdot p_2\dots p_k\),因为\(g(T)\)为积形函数,则有\(g(T)=g(p_1)\cdot g(p_2)\dots g(p_k)\)。
  3. 若\(T\)中有平方质因子时,有\(g(T\cdot p)=g(T)\cdot p^2\)。

    对于\(T\)大的部分,我们发现\(g(T)=\mu*id^2(T)\),则\(g*I(T)=\mu*I*id^2(T)=e*id^2(T)=id^2(T)=T^2\)。

    则有:

\[\sum_{T=1}^nT^2=\sum_{T=1}^n\sum_{d|T}g(d)=\sum_{T=1}^n\sum_{d|T}\sum_{t|d}\mu(t)\cdot \frac{d^2}{t^2}=\sum_{T=1}^n\sum_{d=1}^{\frac{n}{T}}\sum_{t|d}\mu(t)\cdot\frac{d^2}{t^2}
\\=\sum_{T=1}^n\Phi(\frac{n}{T}),则\Phi(n)=\frac{n\cdot (n+1)\cdot (2\cdot n+1)}{6}-\sum_{T=2}^n\Phi(\frac{n}{T})
\]


【Code】

/*
* @Author: Simon
* @Date: 2019-09-04 15:07:56
* @Last Modified by: Simon
* @Last Modified time: 2019-09-04 16:22:26
*/
#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define maxn 1000005
typedef long long ll;
const int mod=1e9+7;
const int Mod=3e6;
int prime[maxn],cnt=0,inv6;
ll phi[maxn],sum[maxn];
bool vis[maxn]={1,1};
void Euler(){ //线性筛
phi[1]=1;
for(int i=2;i<maxn;i++){
if(!vis[i]){
prime[++cnt]=i;
phi[i]=((i*1LL*i%mod-1)%mod+mod)%mod;
}
for(int j=1;j<=cnt&&i*1LL*prime[j]<maxn;j++){
vis[i*prime[j]]=1;
if(i%prime[j]==0){
phi[i*prime[j]]=phi[i]*1LL*prime[j]%mod*prime[j]%mod;
break;
}
phi[i*prime[j]]=phi[i]*1LL*phi[prime[j]];
}
}
for(int i=1;i<maxn;i++) sum[i]=(sum[i-1]+phi[i])%mod;
}
int fpow(int a,int b,int mod){
a%=mod; int ans=1;
while(b){
if(b&1) ans=1LL*ans*a%mod;
a=1LL*a*a%mod;
b>>=1;
}
return ans;
}
unordered_map<ll,ll>mp;
int cal(int n,int k1,int k2){ //等比数列求和公式
if(n==1) return (k2-1)%mod; //特判
int t1=fpow(n,k1+1,mod)-1LL*n*n%mod,t2=n-1;
return 1LL*t1*fpow(t2,mod-2,mod)%mod;
}
int sum_2(int n){
n%=mod;
return 1LL*n%mod*(n+1)%mod*(2*n+1)%mod*inv6%mod;
}
int dfs(int n){ //Phi(n)
if(n<maxn) return sum[n];
if(mp[n]) return mp[n];
int sum=0;
for(int i=2,j;i<=n;i=j+1){
j=n/(n/i);
sum=(sum+(j-i+1)*1LL*dfs(n/i)%mod)%mod;
}
sum=(sum_2(n)-sum)%mod;
mp[n]=sum;
return sum;
}
int main(){
#ifndef ONLINE_JUDGE
//freopen("input.in","r",stdin);
//freopen("output.out","w",stdout);
#endif
ios::sync_with_stdio(false);
cin.tie(0);Euler(); inv6=fpow(6,mod-2,mod);
int T;cin>>T;
while(T--){
mp.clear();
int n;string k;cin>>n>>k;
int t1=0,t2=0;
for(int i=0;i<k.size();i++){
t1=(1LL*t1*10+(k[i]-'0'))%(mod-1);
t2=(1LL*t2*10+(k[i]-'0'))%mod;
}
int ans=0;
for(int i=1,j;i<=n;i=j+1){
j=n/(n/i);
ans=(ans*1LL+(dfs(j)-dfs(i-1))%mod*1LL*cal(n/i,t1,t2)%mod)%mod;
}
cout<<(ans+mod)%mod<<endl;
}
#ifndef ONLINE_JUDGE
cout<<endl;system("pause");
#endif
return 0;
}

2019-ACM-ICPC-南京区网络赛-E. K Sum-杜教筛+欧拉定理的更多相关文章

  1. 2017 ACM/ICPC 南宁区 网络赛 Overlapping Rectangles

    2017-09-24 20:11:21 writer:pprp 找到的大神的代码,直接过了 采用了扫描线+线段树的算法,先码了,作为模板也不错啊 题目链接:https://nanti.jisuanke ...

  2. 2019 ICPC南京站网络赛 H题 Holy Grail(BF算法最短路)

    计蒜客题目链接:https://nanti.jisuanke.com/t/41305 给定的起点是S,终点是T,反向跑一下就可以了,注意判负环以及每次查询需要添加边 AC代码: #include< ...

  3. 2014 ACM/ICPC 鞍山赛区网络赛(清华命题)

    为迎接10月17号清华命题的鞍山现场赛 杭电上的题目 Biconnected(hdu4997)     状态压缩DP Rotate(hdu4998)    相对任一点的旋转 Overt(hdu4999 ...

  4. 【2017 ACM/ICPC 乌鲁木齐赛区网络赛环境测试赛 E】蒜头君的排序

    [链接]h在这里写链接 [题意] 在这里写题意 [题解] 莫队算法+树状数组. 区间增加1或减少1. 对逆序对的影响是固定的. (用冒泡排序变成升序的交换次数,就是逆序对的个数) [错的次数] 0 [ ...

  5. 南京网络赛 E K Sum

    K Sum 终于过了这玩意啊啊啊==== 莫比乌斯反演,杜教筛,各种分块,积性函数怎么线性递推还很迷==,得继续研究研究 #include<bits/stdc++.h> using nam ...

  6. 2019-ACM-ICPC-沈阳区网络赛-K. Guanguan's Happy water-高斯消元+矩阵快速幂

    2019-ACM-ICPC-沈阳区网络赛-K. Guanguan's Happy water-高斯消元+矩阵快速幂 [Problem Description] 已知前\(2k\)个\(f(i)\),且 ...

  7. 2019-ACM-ICPC-南昌区网络赛-H. The Nth Item-特征根法求通项公式+二次剩余+欧拉降幂

    2019-ACM-ICPC-南昌区网络赛-H. The Nth Item-特征根法求通项公式+二次剩余+欧拉降幂 [Problem Description] ​ 已知\(f(n)=3\cdot f(n ...

  8. 2019-ACM-ICPC-南京区网络赛-D. Robots-DAG图上概率动态规划

    2019-ACM-ICPC-南京区网络赛-D. Robots-DAG图上概率动态规划 [Problem Description] ​ 有向无环图中,有个机器人从\(1\)号节点出发,每天等概率的走到下 ...

  9. EOJ Monthly 2019.11 E. 数学题(莫比乌斯反演+杜教筛+拉格朗日插值)

    传送门 题意: 统计\(k\)元组个数\((a_1,a_2,\cdots,a_n),1\leq a_i\leq n\)使得\(gcd(a_1,a_2,\cdots,a_k,n)=1\). 定义\(f( ...

随机推荐

  1. Charles 抓包配置

    本文参考:charles 抓包配置 proxy setting (代理设置) 设置的主界面如下: 动态端口 启用动态端口选项来监听动态端口,每次查询启动时选择.这样可以避免与计算机上可能运行的其他网络 ...

  2. nginx配置访问本地静态资源

    下面说说如何在windows下使用nginx作为静态资源服务器, 1.修改config目录下,这个配置文件,基本上所有的配置都在这里面做, 2.主要的配置参数如下,一些无关的参数我直接去掉了,注意,里 ...

  3. Qt5.编译错误.error: C2338: The slot requires more arguments than the signal provides.

    1.Qt563x86vs2015,遇到如下 编译错误: error: C2338: The slot requires more arguments than the signal provides. ...

  4. beyond Compare 30天过期后的处理办法

    打开Beyond Compare 4,提示已经超出30天试用期限制,解决方法: 修改C:\Program Files\Beyond Compare 4\BCUnrar.dll,这个文件重命名或者直接删 ...

  5. Appium移动自动化测试-----(六)1.appium-desktop下载安装

    Appium 移动测试中有个很重新的组件 Appium-Server,它主要用来监听我们的移动设备(真机或模拟器),然将不同编程语言编写的 appium 测试脚本进行解析,然后,驱动移动设备来运行测试 ...

  6. mysql explain中key_len的作用

    mysql explain中key_len的作用key_len越小 索引效果越好 name的字段类型是varchar(20),字符编码是utf8,一个字符占用3个字节,那么key_len应该是 20* ...

  7. html5 canvas 自定义画图裁剪图片

    html5 给我们带来了极大惊喜的canvas标签,有了它我们可以在浏览器客户端处理图片,不需要经过服务器周转.可以实现: 1.照片本地处理,ps有的一些基本功能都有 2.结合js可以实现一些很炫的动 ...

  8. LeetCode 108. 将有序数组转换为二叉搜索树(Convert Sorted Array to Binary Search Tree) 14

    108. 将有序数组转换为二叉搜索树 108. Convert Sorted Array to Binary Search Tree 题目描述 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索 ...

  9. hadoop 批量处理脚本编写

    编写shell脚本就是解决批量处理 1. 在/usr/local/bin 创建脚本 并授权所有用户 chmod a+x  xcall.sh xcall.sh 比如:删除/tmp/*所有文件   批量删 ...

  10. [PKUSC2018]主斗地(搜索+贪心)

    首先如果对子和三张牌出现在解中,那么全拆成单张显然没有问题,顺子同理.于是真正有用的牌型就只有单牌.三带一.三带二.四带二了. 暴搜jry手中的牌,然后先搜出双方的大牌型(即三张.四张牌的个数),再枚 ...