Description

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

在整理以前的试题时,发现了这样一道题目“求Sigma(f(i)),其中1<=i<=N”,其中 表示i的约数个数。他现在长大了,题目也变难了。
求如下表达式的值:
 
其中 表示ij的约数个数。
他发现答案有点大,只需要输出模1000000007的值。

Input

第一行一个整数n。

Output

一行一个整数ans,表示答案模1000000007的值。

Sample Input

2

Sample Output

8

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的数论的更多相关文章

  1. BZOJ4176: Lucas的数论

    Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目“求Sigma(f(i)),其中1<=i<=N”,其 ...

  2. BZOJ4176 Lucas的数论 【莫比乌斯反演 + 杜教筛】

    题目 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目"求Sigma(f(i)),其中1<=i<=N", ...

  3. bzoj4176. Lucas的数论 杜教筛

    题意:求\(\sum_{i=1}^n\sum_{j=1}^nd(ij),d是约数个数函数\) 题解:首先有一个结论\(d(ij)=\sum_{x|i}\sum_{y|j}[(i,j)==1]\) 那么 ...

  4. 【BZOJ4176】Lucas的数论 莫比乌斯反演

    [BZOJ4176]Lucas的数论 Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目“求Sigma(f(i)) ...

  5. Lucas的数论题解

    Lucas的数论 reference 题目在这里> < Pre 数论分块 默认向下取整时. 形如\(\sum\limits_{i=1}^n f\left( \frac{n}{i}\righ ...

  6. Lucas的数论(math)

    Lucas的数论(math) 题目描述 去年的今日,Lucas仍然是一个热爱数学的孩子.(现在已经变成业界毒瘤了> <) 在整理以前的试题时,他发现了这么一道题目:求\(\sum\limi ...

  7. BZOJ 4176: Lucas的数论 [杜教筛]

    4176: Lucas的数论 题意:求\(\sum_{i=1}^n \sum_{j=1}^n \sigma_0(ij)\) \(n \le 10^9\) 代入\(\sigma_0(nm)=\sum_{ ...

  8. bzoj 4176: Lucas的数论 -- 杜教筛,莫比乌斯反演

    4176: Lucas的数论 Time Limit: 30 Sec  Memory Limit: 256 MB Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么 ...

  9. bzoj 4176 Lucas的数论

    bzoj 4176 Lucas的数论 和约数个数和那题差不多.只不过那个题是多组询问,这题只询问一次,并且 \(n\) 开到了 \(10^9\). \[ \begin{align*} \sum_{i= ...

  10. Mobius反演与积性函数前缀和演学习笔记 BZOJ 4176 Lucas的数论 SDOI 2015 约数个数和

    下文中所有讨论都在数论函数范围内开展. 数论函数指的是定义域为正整数域, 且值域为复数域的函数. 数论意义下的和式处理技巧 因子 \[ \sum_{d | n} a_d = \sum_{d | n} ...

随机推荐

  1. 技能节-AI人脸识别

    我们收到技能节项目的通知是在两周之前,项目要求做个人脸评分系统. 两周时间写一个"人脸评分系统",好像时间比较紧了,还好我们完成了~这个项目是将摄像头捕获到的包含人脸的图像传输到百 ...

  2. jdbc插入mysql时间差14个小时的解决方案

    在java中new Date()输出的时间是没错的,插入到mysql后少了14个小时,原因是新版jdbc驱动的时区设置问题. 在jdbc连接url最后加上serverTimezone=GMT%2B8即 ...

  3. mybatis 延迟加载学习

    一.什么是延迟加载 resultMap可实现高级映射(使用association.collection实现一对一及一对多映射),association.collection具备延迟加载功能. 需求: ...

  4. EF入门-CRUD操作

    一.EF数据查询假设我们已经定义好了context:private AccountContext db = new AccountContext(); 1.[基本查询] 查询所有var users = ...

  5. 这周末又参加班里同学生日party,同学父母包场2小时花费大约1000美金左右。

    今天班上Claire的生日,邀请了几个小朋友去pump it up.特别特别开心,因为她父母选的时间特别好晚上6-8点小孩子玩疯了以后吃的特别多.

  6. 如何调试Python程序 通过IDLE

    在python3.3环境下 1.写一个简单地Python源文件,比如test.py,内容如下: import sys, osdef test(arg1, arg2): print "begi ...

  7. video 轮播视频

    <video controls :src="product.videoUrl" :poster="resURL + defaultImg">< ...

  8. MYSQL 修改语句(数据)

    修改数据(UPDATE)     如果你失忆了,希望你能想起曾经为了追求梦想的你.     我们玩QQ.微信.淘宝等等,都会有一个操作:修改信息   淘宝常用的嘛,新增了收货地址,也可以修改它,微信/ ...

  9. Redis-设置key过期

    Redis-设置key过期 expire key seconds 设置指定key 多少秒后过期, seconds 为 -1 时表示永不过期 ttl key 查看指定key还有多少秒过期 persist ...

  10. MongoDB学习笔记,基础+增删改查+索引+聚合...

    一 基础了解 对应关系 -> https://docs.mongodb.com/manual/reference/sql-comparison/ database -> database ...