bzoj 4176: Lucas的数论【莫比乌斯反演+杜教筛】
首先由这样一个结论:
\]
然后推反演公式:
\]
\]
\]
\]
\]
然后对于这个递归子问题形式就可以用杜教筛求解了
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const long long N=2000005,m=2000000,P=100005,mod=1e9+7;
long long n,mb[N],q[N],tot,ans,p[P],t;
bool v[N];
long long F(long long n)
{
long long sum=0;
for(long long i=1,la;i<=n;i=la+1)
{
la=n/(n/i);
sum=(sum+(la-(i-1))*(n/i)%mod)%mod;
}
return sum*sum%mod;
}
long long getp(long long x,long long n)
{
return (x<=m)?mb[x]:p[n/x];
}
void slv(long long x,long long n)
{
if(x<=m)
return;
long long i,j=1,t=n/x;
if(v[t])
return;
v[t]=1;
p[t]=1;
while(j<x)
{
i=j+1;
j=x/(x/i);
slv(x/i,n);
p[t]=(p[t]-getp(x/i,n)*(j-i+1)+mod)%mod;
}
}
long long wk(long long n)
{
if(n<=m)
return mb[n];
memset(v,0,sizeof(v));
slv(n,n);
return p[1];
}
int main()
{
mb[1]=1;
for(long long i=2;i<=m;i++)
{
if(!v[i])
{
q[++tot]=i;
mb[i]=-1;
}
for(long long j=1;j<=tot&&i*q[j]<=m;j++)
{
long long k=i*q[j];
v[k]=1;
if(i%q[j]==0)
{
mb[k]=0;
break;
}
mb[k]=-mb[i];
}
}
for(long long i=1;i<=m;i++)
mb[i]+=mb[i-1];
scanf("%lld",&n);
for(long long i=1,la;i<=n;i=la+1)
{
la=n/(n/i);//cout<<la<<" "<<i-1<<" "<<wk(la)<<" "<<wk(i-1)<<endl;
ans=(ans+(wk(la)-wk(i-1)+mod)%mod*F(n/i)%mod)%mod;
}
printf("%lld\n",ans);
return 0;
}
bzoj 4176: Lucas的数论【莫比乌斯反演+杜教筛】的更多相关文章
- BZOJ 4176 Lucas的数论 莫比乌斯反演+杜教筛
题意概述:求,n<=10^9,其中d(n)表示n的约数个数. 分析: 首先想要快速计算上面的柿子就要先把d(ij)表示出来,有个神奇的结论: 证明:当且仅当a,b没有相同的质因数的时候我们统计其 ...
- 【bzoj4176】Lucas的数论 莫比乌斯反演+杜教筛
Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目"求Sigma(f(i)),其中1<=i< ...
- BZOJ4652 [Noi2016]循环之美 【数论 + 莫比乌斯反演 + 杜教筛】
题目链接 BZOJ 题解 orz 此题太优美了 我们令\(\frac{x}{y}\)为最简分数,则\(x \perp y\)即,\(gcd(x,y) = 1\) 先不管\(k\)进制,我们知道\(10 ...
- BZOJ 3930: [CQOI2015]选数 莫比乌斯反演 + 杜教筛
求 $\sum_{i=L}^{R}\sum_{i'=L}^{R}....[gcd_{i=1}^{n}(i)==k]$ $\Rightarrow \sum_{i=\frac{L}{k}}^{\fra ...
- [BZOJ 3930] [CQOI 2015]选数(莫比乌斯反演+杜教筛)
[BZOJ 3930] [CQOI 2015]选数(莫比乌斯反演+杜教筛) 题面 我们知道,从区间\([L,R]\)(L和R为整数)中选取N个整数,总共有\((R-L+1)^N\)种方案.求最大公约数 ...
- [复习]莫比乌斯反演,杜教筛,min_25筛
[复习]莫比乌斯反演,杜教筛,min_25筛 莫比乌斯反演 做题的时候的常用形式: \[\begin{aligned}g(n)&=\sum_{n|d}f(d)\\f(n)&=\sum_ ...
- 【bzoj3930】[CQOI2015]选数 莫比乌斯反演+杜教筛
题目描述 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公约数,以便进一 ...
- BZOJ4176 Lucas的数论 【莫比乌斯反演 + 杜教筛】
题目 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目"求Sigma(f(i)),其中1<=i<=N", ...
- 【CCPC-Wannafly Winter Camp Day3 (Div1) F】小清新数论(莫比乌斯反演+杜教筛)
点此看题面 大致题意: 让你求出\(\sum_{i=1}^n\sum_{j=1}^n\mu(gcd(i,j))\). 莫比乌斯反演 这种题目,一看就是莫比乌斯反演啊!(连莫比乌斯函数都有) 关于莫比乌 ...
随机推荐
- Swift--Set的了解
1. 创建和初始化一个空的set var letters = Set<Character>() 或者,如果上下文已经提供了类型信息,例如函数参数或已输入的变量或常量,则可以创建空的集合,其 ...
- HUD——1083 Courses
HUD——1083 Courses Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...
- Mysql 数据库允许远程连接 服务器连接错误 Host 'XXX' is not allowed to connect to this MySQL server
如果连接数据库的时候出现这个问题 Host 'XXX' is not allowed to connect to this MySQL server 说明 Mysql数据库 不允许远程连接, 需要修改 ...
- QT程序--小工具集合
这是在大一第一学期时写的参加程序设计大赛的作品,当时参加的时候仅仅只有贪吃蛇,迷宫算法和文件加密这三个功能,而且当时的界面并没有进行任何美化,现在想起来有点可惜.然而这并不是一个只写一遍的软件,在后期 ...
- Meteor环境安装配置
在本教程中,我们将展示如何在windows操作系统安装Meteor .在我们开始学习使用Meteor 之前,我们将需要NodeJS.如果你还没有安装它,则可以点击下表中的链接. 必须条件 Meteor ...
- java quartz的使用,做时间轮询调用 CronTrigger
import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionExceptio ...
- 一例Ext4文件系统fsck后损坏的修复过程
1.故障发生背景 Ext4文件系统没有umount下来,之后做了fsck操作检查一致性,结果导致Ext4文件mount不上(有时也会表现为导致目录变成了文件). 报错提示信息:mount: wrong ...
- asp.net mvc的权限管理设计
现在集中展示用户-角色-权限管理的功能,因此,所有数据表一律简化处理. 1 后台管理效果 (1)角色管理 (2)权限管理 2 数据库设计(MSSQL) (1)用户表dbo.Users 项 类型 ...
- C# 中用DES 对称Key,IV 加密,前端crypto.js 解密
1.服务器端代码 #region ========加密======== /// <summary> /// 加密 /// </summary> /// <param na ...
- 鸡肋的JdbcRDD
今天准备将mysql的数据倒腾到RDD.非常早曾经就知道有一个JdbcRDD.就想着使用一下,结果发现却是鸡肋一个. 首先,看看JdbcRDD的定义: * An RDD tha ...