【BZOJ4176】 Lucas的数论
Description
去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了。

Input
第一行一个整数n。
Output
一行一个整数ans,表示答案模1000000007的值。
Sample Input
Sample Output
HINT
对于100%的数据n <= 10^9。
Solution
因为直接用编辑器打公式比较麻烦且丑,就用markdown截图完传图片了= =b。


Code
#include <cstdio>
#include <cmath> #define R register
const int mod = 1e9 + ;
#define maxn 1500010
int miu[maxn], smiu[maxn], pr[maxn / ], prcnt, lim, N;
bool vis[maxn];
int hash[maxn];
bool vihash[];
int Miu(R int n)
{
if (n <= lim) return smiu[n];
if (vihash[N / n]) return hash[N / n]; vihash[N / n] = ;
R int ret = ;
for (R int i = , j; i <= n; i = j + )
{
j = n / (n / i);
(ret += mod - 1ll * (j - i + ) * Miu(n / i) % mod) %= mod;
}
return hash[N / n] = ret;
}
inline int sumf(R int n)
{
R int ret = ;
for (R int i = , j; i <= n; i = j + )
{
j = n / (n / i);
ret = (ret + 1ll * (j - i + ) * (n / i)) % mod;
}
return ret;
}
int main()
{
scanf("%d", &N);
lim = (int) pow(N * 1.0, 0.666);
// printf("%d\n", lim);
miu[] = smiu[] = ;
for (R int i = ; i <= lim; ++i)
{
if (!vis[i]) pr[++prcnt] = i, miu[i] = -;
smiu[i] = (smiu[i - ] + miu[i]) % mod;
for (R int j = ; j <= prcnt && 1ll * i * pr[j] <= lim; ++j)
{
vis[i * pr[j]] = ;
if (i % pr[j]) miu[i * pr[j]] = -miu[i];
else
{
miu[i * pr[j]] = ;
break;
}
}
}
R int ans = , last = ;
for (R int i = , j; i <= N; i = j + )
{
j = N / (N / i);
R int Ph = Miu(j);
R int fs = sumf(N / i);
// printf("l = %d r = %d %d %d\n", i, j, Ph, fs);
ans = (ans + 1ll * (Ph - last + mod) * fs % mod * fs) % mod;
last = Ph;
}
// printf("%d\n", last);
printf("%d\n", ans % mod);
return ;
}
【BZOJ4176】 Lucas的数论的更多相关文章
- BZOJ4176: Lucas的数论
Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目“求Sigma(f(i)),其中1<=i<=N”,其 ...
- BZOJ4176 Lucas的数论 【莫比乌斯反演 + 杜教筛】
题目 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目"求Sigma(f(i)),其中1<=i<=N", ...
- bzoj4176. Lucas的数论 杜教筛
题意:求\(\sum_{i=1}^n\sum_{j=1}^nd(ij),d是约数个数函数\) 题解:首先有一个结论\(d(ij)=\sum_{x|i}\sum_{y|j}[(i,j)==1]\) 那么 ...
- 【BZOJ4176】Lucas的数论 莫比乌斯反演
[BZOJ4176]Lucas的数论 Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目“求Sigma(f(i)) ...
- Lucas的数论题解
Lucas的数论 reference 题目在这里> < Pre 数论分块 默认向下取整时. 形如\(\sum\limits_{i=1}^n f\left( \frac{n}{i}\righ ...
- Lucas的数论(math)
Lucas的数论(math) 题目描述 去年的今日,Lucas仍然是一个热爱数学的孩子.(现在已经变成业界毒瘤了> <) 在整理以前的试题时,他发现了这么一道题目:求\(\sum\limi ...
- BZOJ 4176: Lucas的数论 [杜教筛]
4176: Lucas的数论 题意:求\(\sum_{i=1}^n \sum_{j=1}^n \sigma_0(ij)\) \(n \le 10^9\) 代入\(\sigma_0(nm)=\sum_{ ...
- bzoj 4176: Lucas的数论 -- 杜教筛,莫比乌斯反演
4176: Lucas的数论 Time Limit: 30 Sec Memory Limit: 256 MB Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么 ...
- bzoj 4176 Lucas的数论
bzoj 4176 Lucas的数论 和约数个数和那题差不多.只不过那个题是多组询问,这题只询问一次,并且 \(n\) 开到了 \(10^9\). \[ \begin{align*} \sum_{i= ...
- Mobius反演与积性函数前缀和演学习笔记 BZOJ 4176 Lucas的数论 SDOI 2015 约数个数和
下文中所有讨论都在数论函数范围内开展. 数论函数指的是定义域为正整数域, 且值域为复数域的函数. 数论意义下的和式处理技巧 因子 \[ \sum_{d | n} a_d = \sum_{d | n} ...
随机推荐
- element-ui tree控件获取当前节点和父节点
今天使用element-ui 遇到两个问题,第一个问题是获取tree控件的当前节点和父节点, 一开始使用tree控件的getCurrentNode()函数,结果发现返回的是当前节点的data属性,和u ...
- springboot打包的jar项目,不需要安装jdk环境启动
因为服务器上是JDK7,而springboot至少用JDK8才行,但是又因为是很老的项目,不是很清楚能不能换JDK8,有风险,因此选择以前项目用JDK7,而新的springboot用JDK8.步骤一: ...
- 本地连接Linux工具
连接Linux命令 finaXshell 工具好用: 链接:https://pan.baidu.com/s/13yyOhi7GzcZNTxXseGO_fA 提取码:n4t6 上次Linux 文件工具: ...
- Codeforces 1237B. Balanced Tunnel
传送门 这一题有点意思 首先预处理出 $pos[x]$ 表示编号 $x$ 的车是第几个出隧道的 然后按进入隧道的顺序枚举每辆车 $x$ 考虑有哪些车比 $x$ 晚进入隧道却比 $x$ 早出隧道 显然是 ...
- C#Linq之求和,平均值,最大值,最小值
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- 基于JWT的token身份认证方案(转)
https://www.cnblogs.com/xiangkejin/archive/2018/05/08/9011119.html 一.使用JSON Web Token的好处? 1.性能问题. JW ...
- Linux编译安装GCC
1. 下载gcc安装包 网址:http://ftp.gnu.org/gnu/gcc/ ,下载对应的安装包,我选择gcc-5.5.0.tar.gz 2. 下载依赖库 一个是mpc,一个是gmp,一个是m ...
- Centos网卡名称命名
1. vim /etc/sysconfig/grub 编辑/etc/sysconfig/grub文件 添加 net.ifnames=0 biosname=0 GRUB_TIMEOUT= GR ...
- Python 编解码
字符串编码常用类型:utf-8,gb2312,cp936,gbk等. python中,我们使用decode()和encode()来进行解码和编码 在python中,使用unicode类型作为编码的基础 ...
- Java语言基础(10)
1 方法(三) 案例:Demo1 import java.util.Scanner; public class Demo1 { static int min(int num1,int num2){ i ...