看这个题解吧:http://blog.csdn.net/wubaizhe/article/details/77338332

代码里顺便把几个常用的线性筛附上了。

Key:1、gcd(i,j)==1利用莫比乌斯函数的性质进行转化。

2、变换求和符号的顺序。

3、发现,该式可以递推

4、线性筛约数个数函数。

#include<cstdio>
#include<algorithm>
using namespace std;
#define MOD 1000000007
#define N 1000000
bool notpri[N+5];
int pri[N+5],n,mu[N+5],sum[N+5];
typedef long long ll;
void shai_mu()//线性筛莫比乌斯函数,并处理出前缀和
{
notpri[1]=1; mu[1]=1;
for(int i=2;i<=N;i++){
if(!notpri[i]){
pri[++pri[0]]=i;
mu[i]=-1;
}
for(int j=1;j<=pri[0] && (ll)i*(ll)pri[j]<=(ll)N;j++){
notpri[i*pri[j]]=1;
mu[i*pri[j]]=-mu[i];
if(i%pri[j]==0){
mu[i*pri[j]]=0;
break;
}
}
}
sum[1]=mu[1];
for(int i=2;i<=N;i++){
sum[i]=sum[i-1]+mu[i];
}
}
int ysgs[N+5],facnum[N+5],d[N+5]/*d(i)是辅助数组,记录每个数的最小质因子的幂次*/;
void shai_facnum()//线性筛每个数的约数个数
{
facnum[1]=1;
for(int i=2;i<=N;++i){
if(!notpri[i]){
facnum[i]=2;
d[i]=1;
}
for(int j=1;j<=pri[0] && (ll)i*(ll)pri[j]<=(ll)N;++j){
if(i%pri[j]==0){
facnum[i*pri[j]]=facnum[i]/(d[i]+1)*(d[i]+2);
d[i*pri[j]]=d[i]+1;
break;
}
facnum[i*pri[j]]=facnum[i]*2;
d[i*pri[j]]=1;
}
}
}
int g[N+5];
int main(){
//freopen("hdu6134.in","r",stdin);
shai_mu();
shai_facnum();
g[1]=1;
for(int i=2;i<=N;++i){
g[i]=(g[i-1]+(facnum[i-1]+1))%MOD;
}
for(int i=2;i<=N;++i){
g[i]=(g[i]+g[i-1])%MOD;
}
while(scanf("%d",&n)!=EOF){
int ans=0;
for(int i=1;i<=n;){
ans=(ans+(int)((((ll)(sum[n/(n/i)]-sum[i-1]+(ll)MOD)%(ll)MOD)*(ll)g[n/i])%(ll)MOD))%MOD;
i=n/(n/i)+1;
}
printf("%d\n",ans);
}
return 0;
}
/*
线性筛欧拉函数
void get_eular()
{
pnum = 0;
for(int i = 2; i < MAX; i++)
{
if(!noprime[i])
{
p[pnum ++] = i;
phi[i] = i - 1;
}
for(int j = 0; j < pnum && i * p[j] < MAX; j++)
{
noprime[i * p[j]] = true;
if(i % p[j] == 0)
{
phi[i * p[j]] = phi[i] * p[j];
break;
}
phi[i * p[j]] = phi[i] * (p[j] - 1);
}
}
}
*/

【数论】【莫比乌斯反演】【线性筛】hdu6134 Battlestation Operational的更多相关文章

  1. 【bzoj2693】jzptab 莫比乌斯反演+线性筛

    题目描述 输入 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M 输出 T行 每行一个整数 表示第i组数据的结果 样例输入 1 4 5 样例输出 122 题解 莫比乌斯反演+线性筛 由 ...

  2. 【bzoj2694】Lcm 莫比乌斯反演+线性筛

    题目描述 求$\sum\limits_{i=1}^n\sum\limits_{j=1}^m|\mu(gcd(i,j))|lcm(i,j)$,即$gcd(i,j)$不存在平方因子的$lcm(i,j)$之 ...

  3. 【bzoj4407】于神之怒加强版 莫比乌斯反演+线性筛

    题目描述 给下N,M,K.求 输入 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行,每行为两个正整数N,M,其意义如上式所示. 输出 如题 ...

  4. 莫比乌斯反演/线性筛/积性函数/杜教筛/min25筛 学习笔记

    最近重新系统地学了下这几个知识点,以前没发现他们的联系,这次总结一下. 莫比乌斯反演入门:https://blog.csdn.net/litble/article/details/72804050 线 ...

  5. 【BZOJ-4407】于神之怒加强版 莫比乌斯反演 + 线性筛

    4407: 于神之怒加强版 Time Limit: 80 Sec  Memory Limit: 512 MBSubmit: 241  Solved: 119[Submit][Status][Discu ...

  6. bzoj 2820 YY的GCD - 莫比乌斯反演 - 线性筛

    Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必 ...

  7. BZOJ3309 DZY Loves Math(莫比乌斯反演+线性筛)

    一通正常的莫比乌斯反演后,我们只需要求出g(n)=Σf(d)*μ(n/d)的前缀和就好了. 考虑怎么求g(n).当然是打表啊.设n=∏piai,n/d=∏pibi .显然若存在bi>1则这个d没 ...

  8. Luogu 4917 天守阁的地板(莫比乌斯反演+线性筛)

    既然已经学傻了,这个题当然是上反演辣. 对于求积的式子,考虑把[gcd=1]放到指数上.一通套路后可以得到∏D∏d∏i∏j (ijd2)μ(d) (D=1~n,d|D,i,j=1~n/D). 冷静分析 ...

  9. 【bzoj3309】DZY Loves Math 莫比乌斯反演+线性筛

    Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0. 给定正整数a,b, ...

  10. bzoj 4407: 于神之怒加强版【莫比乌斯反演+线性筛】

    看着就像反演,所以先推式子(默认n<m): \[ \sum_{d=1}^{n}d^k\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)==d] \] \[ =\sum_{d=1} ...

随机推荐

  1. 如何创建和销毁对象(Effective Java 第二章)

    最近有在看Effective Java,特此记录下自己所体会到的东西,写篇博文会更加的加深印象,如有理解有误的地方,希望不吝赐教. 这章主题主要是介绍:何时以及如何创建对象,何时以及如何避免创建对象, ...

  2. mybatis 显示 sql日志

    #项目日志logging.level.com.zhang.com=debug #mybatis sql相关日志显示logging.level.org.mybatis.spring=DEBUGloggi ...

  3. java封装示例代码

    package com.imooc; public class Telphone { private float screen; private float cpu; private float me ...

  4. Jmeter===Jmeter中使用CSV Data Set Config参数化不重复数据执行N遍(转)

    Jmeter中使用CSV Data Set Config参数化不重复数据执行N遍 要求: 今天要测试上千条数据,且每条数据要求执行多次,(模拟多用户多次抽奖) 1.用户id有175个,且没有任何排序规 ...

  5. Deep Learning基础--CNN的反向求导及练习

    前言: CNN作为DL中最成功的模型之一,有必要对其更进一步研究它.虽然在前面的博文Stacked CNN简单介绍中有大概介绍过CNN的使用,不过那是有个前提的:CNN中的参数必须已提前学习好.而本文 ...

  6. jQuery -《锋利的jQuery》————读后小结

    jQuery是一个优秀的javascript库. 我用的是vs2012自带的  jquery-1.8.2.js这个库,在Scripts这个文件夹下面 首先,我们使用jQuery要在head标签内引入j ...

  7. 流程控制--while

    /* while 是在有条件控制的情况下 进行的循环 */ [root@localhost test1]# vim .py //ADD #!/usr/bin/python n = while True ...

  8. MySQL的数据库引擎的类型(转)

    腾讯后台开发电话面试问到数据库引擎选用的问题,这里补习一下. 本文属于转载,原文链接为:http://www.cnblogs.com/xulb597/archive/2012/05/25/251811 ...

  9. HTML5表单之Input 类型- Date Pickers(日期选择器)

    HTML5 拥有多个可供选取日期和时间的新输入类型: date-选取日.月.年 month-选取月.年 week-选取周和年 time-选取时间(小时和分钟) datetime-选取时间.日.月.年( ...

  10. Populating Next Right Pointers in Each Node I&&II ——II仍然需要认真看看

    Populating Next Right Pointers in Each Node I Given a binary tree struct TreeLinkNode { TreeLinkNode ...