LGP6156题解
真·简单题
题目大意
给定 \(n\) 和 \(k\),求出这个柿子的值:
\]
按照莫反的套路,我们枚举 \(\gcd\):
\]
\]
来一发反演:
\]
\]
\]
设 \(f(n) = \sum_{i=1}^n\sum_{j=1}^n(i+j)^k\)
\]
再考虑套路,令 \(T = dx\):
\]
\]
后面的部分明显是狄利克雷卷积的形式
\]
然后我们来考虑 \(f\):
\]
经过 简单 复杂的推导后,发现它等于:
\]
我们再设:
\]
\]
就会发现:
\]
然后我们来考虑这个毒瘤的积性函数:
\]
虽然可以 \(O(n\log n)\) 暴力预处理,但是显然会 \(\rm TLE\),由于这是一个积性函数,考虑对其线性筛。
\]
\]
因为鸽笼原理,\(F(p^e) (3 \leq e )\) 中,要么 \(\mu^2(p^k)\) 是 \(0\)(即 \(id(p^k) \times \mu^2(p^k)\) 是 \(0\)),要么 \(\mu(p^{e-k})\) 是 \(0\),即 \(F(p^e) = 0 (3 \leq e)\)
那么我们就可以线性筛 \(F\) 了。
然后来考虑 \(S\) 和 \(sum\),容易发现 \(S\) 其实就是 \(id^k\) 的前缀和,所以能够线性筛,那么 \(sum\) 也可以在线性时间内预处理。
复杂度:预处理 \(O(n)\),询问 \(O(\sqrt n)\)。
code:
#include<cstdio>
const int M=1e7+5,mod=998244353;
int n,k,top,f[M],sum[M],pri[M],zhi[M];
inline int Add(const int&a,const int&b){
return a+b>=mod?a+b-mod:a+b;
}
inline int pow(int a,int b){
int ans=1;
for(;b;b>>=1,a=1ll*a*a%mod)if(b&1)ans=1ll*a*ans%mod;
return ans;
}
void sieve(){
int i,j,x;
f[1]=sum[1]=zhi[1]=1;
for(i=2;i<=(n<<1);++i){
if(!zhi[i])pri[++top]=i,f[i]=i-1,sum[i]=pow(i,k);
for(j=1;j<=top&&(x=i*pri[j])<=(n<<1);++j){
zhi[x]=1;
sum[x]=1ll*sum[i]*sum[pri[j]]%mod;
if(i%pri[j]){
f[x]=1ll*f[i]*(pri[j]-1)%mod;
}
else{
if(i/pri[j]%pri[j])f[x]=1ll*f[i/pri[j]]*(mod-pri[j])%mod;
break;
}
}
}
for(i=1;i<=(n<<1);++i){
f[i]=Add(f[i-1],1ll*f[i]*sum[i]%mod);
sum[i]=Add(sum[i],sum[i-1]);
}
for(i=1;i<=(n<<1);++i)sum[i]=Add(sum[i-1],sum[i]);
}
inline int S(const int&n){
return (sum[n<<1]-(sum[n]<<1)%mod+mod)%mod;
}
signed main(){
int i,ans=0;
long long tmp;
scanf("%d%lld",&n,&tmp);
k=tmp%(mod-1);
sieve();
for(int L=1,R;L<=n;L=R+1){
R=n/(n/L);
ans=Add(ans,1ll*(f[R]-f[L-1]+mod)%mod*S(n/L)%mod);
}
printf("%d",ans);
}
LGP6156题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- Linux添加用户组和添加用户
1.用户组 添加组:groupadd 组名 [root@Server-n93yom ~]# groupadd dev [root@Server-n93yom ~]# cat /etc/group | ...
- 模仿系统的UIImageView
整体思路: 我们想要模仿系统的UIImageView,我们必须得要知道系统的UIView怎么用. 系统的用法是创建一个UIImageView对象,设置frame,给它传递一个UIIma ...
- VC 创建快捷方式
转载请注明来源:https://www.cnblogs.com/hookjc/ VC6下测试时使用的是绝对地址BOOL CFGDlg::CreateLink ( LPSTR szPath ...
- Python property动态属性
from datetime import datetime, date class User: def __init__(self, name, birthday): self.name = name ...
- Struts2中的过滤器
过滤器: 过滤器可以处理用户的请求和程序响应的内容,可用于权限控制.编码转换的场合.过滤器是servlet规范中的一部分,不是只有Struts2有. 使用过滤器之前你得定义一个过 ...
- laravel中closure和curry 科里化函数式编程
推荐值得的一看博客文档:谢谢作者 : https://my.oschina.net/zhmsong 函数式编程curry的概念: 只传递给函数一部分参数来调用函数,然后返回一个函数去处理剩下的参数. ...
- fuzz——AFL基础使用方法
最近打 ctf 的时候感觉有点遇到瓶颈,就来 fuzz 这块看看. AFL 全称为 American huzzy loop,是 Fuzzing 最高级的测试工具之一.这个工具对有源码和无源码的二进制程 ...
- C快速指南
https://seleniumhq.github.io/docs/quick.html QUICK TOUR Selenium is not just one tool or API but it ...
- 前端表单标签form 及 简单应用
今日内容 form 表单(重点) 后端框架之 flask 简介 内容详细 form 表单 1.作用 form 表单可以在前端获取用户输入的数据并发送给后端(服务端) 2.input 标签 获取用户数据 ...
- CoaXPress 接口相机的控制方法--2
接上一篇 <CoaXPress 接口相机的控制方法--1> https://www.cnblogs.com/xingce/p/15902246.html 这里再介绍一下具体是如何完成相机寄 ...