很久很久以前,有一只神犇叫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));
}

最新文章

  1. IO多路复用之epoll总结
  2. 【Cocos2d-x 3.x】 场景切换生命周期、背景音乐播放和场景切换原理与源码分析
  3. C# 字符串转义和反转义
  4. iOS中plist的创建,数据写入与读取
  5. iOS - Swift Struct 结构体
  6. 2 TKinter绑定事件
  7. Codeforces Gym 100463E Spies 并查集
  8. 基于jQuery的宽屏可左右切换的焦点图插件
  9. jQuery plugin : jqTransform
  10. 【python之路6】pycharm的使用
  11. MSDN官方数据库开发群
  12. JMeter集合点
  13. 证书,CSP与Openssl
  14. SVN使用方法
  15. Linux中的configure,make,make install到底在做些什么
  16. 安装yii2 需要token 记录
  17. JavaScript 概述
  18. CentOS7.x系统中使用Docker时,在存储方面需要注意的问题
  19. Spring Boot + Spring Cloud 实现权限管理系统 (系统服务监控)
  20. (转).net反编译工具JustDecompile

热门文章

  1. mongodb--find基础用法
  2. js休眠
  3. 【转】Unix下C程序内存泄漏检测工具Valgrind安装与使用
  4. Objective-C学习笔记(二十二)——初始化方法init的重写与自己定义
  5. [Oracle]行列转换(行合并与拆分)
  6. Empower Developers
  7. HDU 4607 Park visit (求树的直径)
  8. const指针总结
  9. PHP反射类的理解(代码篇)
  10. hdu 1002(大数)