[BZOJ4916]神犇(Monster_Qi)和蒟蒻(SWHsz)
很久很久以前,有一只神犇叫Monster_Qi;
很久很久之后,有一只蒟蒻叫SWHsz;

1<=N<=1E9,A、B模1E9+7;
求这个。
求μ的话直接输出1就行了因为除了1的平方外都有平方因子。
求φ的话就有个显而易见的结论就是\(φ(n^2)=φ(n)n\),列出φ的一般式就行了。
然后就是套杜教筛的模板了。
要凑 \(f \cdot g=h\)
$ h(i)=\sum _{d|i} φ(d)dg(i/d) \(
显而易见的,g是\)id\(函数,\)h(i)=i^2$
然后随便搞了。
#include <iostream>
#include <cstdio>
#include <map>
using namespace std;
map<long long,long long>mp;
long long n;
const int N = 10000005,NI2=500000004,NI6=166666668,mod=1e9+7;
long long ph[N],prime[N],cnt;
bool vis[N];
void phhh() {
ph[1]=1;
for(int i=2; i<=N-5; i++) {
if(!vis[i]) prime[++cnt]=i,ph[i]=i-1;
for(int j=1; j<=cnt; j++) {
if(i*prime[j]<=N-5) vis[i*prime[j]]=1;else break;
if(i%prime[j]==0){ph[i*prime[j]]=ph[i]*prime[j];break;}
else ph[i*prime[j]]=ph[i]*ph[prime[j]];
}
}
for(int i=1;i<=N-5;i++) ph[i]=(ph[i]*i+ph[i-1])%mod;
}
long long solve(long long x) {
if(N-5>=x) return ph[x];
if(mp.count(x)) return mp[x];
long long ans=x*((x+1)%mod)%mod*((2*x%mod+1)%mod)%mod*NI6%mod;
for(long long i=2,nxti;i<=x;i=nxti+1) {
nxti=x/(x/i);
ans=(ans-(nxti+i)%mod*(nxti-i+1ll)%mod*NI2%mod*solve(x/i))%mod;
}
return mp[x]=(ans+mod)%mod;
}
int main() {
phhh();
scanf("%lld",&n);
printf("1\n%lld",solve(n));
}
[BZOJ4916]神犇(Monster_Qi)和蒟蒻(SWHsz)的更多相关文章
- BZOJ4916: 神犇和蒟蒻【杜教筛】
Description 很久很久以前,有一只神犇叫yzy; 很久很久之后,有一只蒟蒻叫lty; Input 请你读入一个整数N;1<=N<=1E9,A.B模1E9+7; Output 请你 ...
- BZOJ4916 神犇和蒟蒻 【欧拉函数 + 杜教筛】
题目 很久很久以前,有一只神犇叫yzy; 很久很久之后,有一只蒟蒻叫lty; 输入格式 请你读入一个整数N;1<=N<=1E9,A.B模1E9+7; 输出格式 请你输出一个整数A=\sum ...
- LG4213 【模板】杜教筛(Sum)和 BZOJ4916 神犇和蒟蒻
P4213 [模板]杜教筛(Sum) 题目描述 给定一个正整数$N(N\le2^{31}-1)$ 求 $$ans_1=\sum_{i=1}^n\varphi(i)$$ $$ans_2=\sum_{i= ...
- BZOJ4916 神犇和蒟蒻(欧拉函数+杜教筛)
第一问是来搞笑的.由欧拉函数的计算公式容易发现φ(i2)=iφ(i).那么可以发现φ(n2)*id(n)(此处为卷积)=Σd*φ(d)*(n/d)=nΣφ(d)=n2 .这样就有了杜教筛所要求的容易算 ...
- Bzoj4916: 神犇和蒟蒻
题面 传送门 Sol 第一问puts("1") 第二问,\(\varphi(i^2)=i\varphi(i)\) 设\(\phi(n)=\sum_{i=1}^{n}i\varphi ...
- BZOJ4916: 神犇和蒟蒻(杜教筛)
题意 求 $$\sum_{i = 1}^n \mu(i^2)$$ $$\sum_{i = 1}^n \phi(i^2)$$ $n \leqslant 10^9$ Sol zz的我看第一问看了10min ...
- [BZOJ4916]神犇和蒟蒻 杜教筛/Min_25筛
题目大意: 给定\(n\le 10^9\),求: 1.\(\sum_{i=1}^n\mu(i^2)\) 2.\(\sum_{i=1}^n\varphi(i^2)\) 解释 1.\(\sum_{i=1} ...
- 【BZOJ4916】神犇和蒟蒻(杜教筛)
[BZOJ4916]神犇和蒟蒻(杜教筛) 题面 BZOJ 求 \[\sum_{i=1}^n\mu(i^2)\ \ 和\ \sum_{i=1}^n\phi(i^2)\] 其中\[n<=10^9\] ...
- 【BZOJ4916】神犇和蒟蒻 解题报告
[BZOJ4916]神犇和蒟蒻 Description 很久很久以前,有一群神犇叫sk和ypl和ssr和hjh和hgr和gjs和yay和xj和zwl和dcx和lyy和dtz和hy和xfz和myh和yw ...
随机推荐
- jquery-cookie持久化
jQuery.Cookie.js,是一个轻量级的Cookie管理插件 <script src="jQuery.1.8.3.js" type="text/javasc ...
- POJ 3076
DLX算法,刚接触,是关于精确覆盖的,白书上有算法介绍. 代码模板 #include <iostream> #include <cstdio> #include <cst ...
- Java中Void占位符的測试及个人理解
Java对Void类的说明是:Void 类是一个不可实例化的占位符类,它保持一个对代表 Java keyword void 的 Class 对象的引用. 代表的是: 代表主要的 Java 类型 voi ...
- no projects are found to import
从svn上导出的项目在导入Eclipse中常常出现 no projects are found to import . 产生的原因是:项目文件里中没有".classpath"和&q ...
- 11153 kill boss
11153 kill boss 时间限制:1000MS 内存限制:65535K提交次数:1090 通过次数:340 题型: 编程题 语言: G++;GCC Description Acmer最近 ...
- C语言读取文件大量数据到数组
针对.txt文档的大量有规律数据,譬如100行8列的数据将其读取到二维数组(矩阵)中,留作之后的数据处理. 改程序通过宏定义的方法来确定将要读取程序的行数和列数,将数据读取到二维数组data[100] ...
- 《编程导论(Java)·1.4.1 范式》
这个楼主,是我的学生么?2013年写的! 嗯."编程范式或许是学习不论什么一门编程语言时要理解的最重要的术语".这句话早在2005年出版<Java程序设计>(宋中山,严 ...
- POJ3463 Sightseeing
题目大意:求两点间最短路与长度为最短路长度+1的路径的条数之和. 方法1:最短路径+DP 首先求出ST间最短路径,然后根据递归式记忆化搜索(因此还要构造反向图). 我们知道到达终点的路径长度最长为ma ...
- Could not open ServletContext resource [/WEB-INF/Dispatcher-servlet.xml]
转自:https://blog.csdn.net/mafan121/article/details/44833201 配置spring时出现了如下错误: 默认的DispatcherServlet在初始 ...
- [JavaEE] 了解Java连接池
转载自51CTO http://developer.51cto.com/art/201006/207768.htm 51CTO曾经为我们简单的介绍过Java连接池.要了解Java连接池我们先要了解数据 ...