SUM 题意:f(n)是n可以拆成多少组n=a*b,a和b都是不包含平方因子的方案数目,对于a!=b,n=a*b和n=b*a算两种方案,求∑i=1nf(i) 首先我们可以知道,n=1时f(1)=1, 然后我们继续分析,当n为素数p时,只能拆成n=1*p和n=p*1这两种,所以f(p)=2, 而当n=两个质数的乘积时,对于n=左*右,p1跟p2可以任意分配在左和右,它们的方案是类乘的,所以f(p1*p2)=f(p1)*f(p2) 这里可以看出f(n)是个积性函数,那说明我们可以把它通过线性筛筛出来…
2749: [HAOI2012]外星人 Description Input Output 输出test行,每行一个整数,表示答案. Sample Input 1 2 2 2 3 1 Sample Output 3 HINT Test<=50 Pi<=10^5,1<=Q1<=10^9 Source [分析] 额,一开始还看不懂题目..phi的x表示phi的x阶函数,即phi[phi[phi[...phi[N]]]]],x个phi... 然后不会做... 我们先来熟悉一下欧拉函数 2-…
最近重新系统地学了下这几个知识点,以前没发现他们的联系,这次总结一下. 莫比乌斯反演入门:https://blog.csdn.net/litble/article/details/72804050 线性筛筛常见积性函数及其代码:https://blog.masterliu.net/algorithm/sieve/ 积性函数与线性筛(包括普通线性函数):https://blog.csdn.net/weixin_42562050/article/details/87997582 bzoj2154/b…
问题描述 洲阁筛解决的问题主要是\(n\)范围较大的积性函数前缀和. ​ 已知一积性函数\(f(i)\),求\(\sum_{i=1}^nf(i)\). \(n\leq10^{12}\). 求解方法 如果\(f(i)\)在质数处的取值比较简单,那么可以运用洲阁筛来求解. ​ 我们需要两个辅助数组. \(g_{i,j}\) 定义如下: \[ \begin{aligned} g_{i,j}&=\sum_{k=2}^i[k与p_1,p_2,...,p_j互质或就是其中某个质数]\; s(k)\\ &…
2693: jzptab Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 444  Solved: 174[Submit][Status][Discuss] Description   Input 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M Output T行 每行一个整数 表示第i组数据的结果 Sample Input 1 4 5 Sample Output 122 HINT T <= 10000 N, M<=100000…
给定n个正整数a1,a2,…,an,求 的值(答案模10^9+7). Input 第一行一个正整数n. 接下来n行,每行一个正整数,分别为a1,a2,…,an. Output 仅一行答案. Sample Input 3 6 10 15 Sample Output 1595 Hint 1<=n<=10^5,1<=ai<=10^7.共3组数据. 题目大意 (题目过于简洁,完全不需要大意) 题目虽然很简洁,但是处处挖着坑等你跳. 原计划两个小时把今天讲的例题A完,实际上两个小时都被这道题…
下文中所有讨论都在数论函数范围内开展. 数论函数指的是定义域为正整数域, 且值域为复数域的函数. 数论意义下的和式处理技巧 因子 \[ \sum_{d | n} a_d = \sum_{d | n} a_{\frac n d} \] 双重因子 \[ \sum_{k | n} \sum_{j | k} a_{k, j} = \sum_{k | n} \sum_{j | \frac n k} a_{jk, k} \] \[ \sum_{n | k} \sum_{k | j} a_{k, j} = \…
Divisor counting 题目大意:定义f(n)表示整数n的约数个数.给出正整数n,求f(1)+f(2)+...+f(n)的值. 注释:1<=n<=1000,000 想法:我们再次有两种做法:文...武......想讲武的......我们其实这次更博只是为了介绍一种知识点——线性筛法筛积性函数.这里,给出线性筛的万能筛法. 1.初值:显然,初值是必要的. 2.我们类比欧拉筛,用k(n)举例.当n是素数时的情况使我们必须的,这相当于初值一样重要. 3.又因为,我们主要筛积性函数,显然函数…
HDU - 2879HeHe 题意:He[N]为[0,N−1]范围内有多少个数满足式子x2≡x (mod N),求HeHe[N]=He[1]×……×He[N] 我是通过打表发现的he[x]=2k,k为x是质因子个数,不过这是可以通过积性函数证明的. 关于积性函数的定义: 对于正整数n的一个算术函数 f(n),若f(1)=1,且当a,b互质时,f(ab)=f(a)f(b),在数论上就称它为积性函数.若对于某积性函数 f(n) ,就算a, b不互质,也有f(ab)=f(a)f(b),则称它为完全积性…
推导: 设d=gcd(i,j) 利用莫比乌斯函数的性质 令sum(x,y)=(x*(x+1)/2)*(y*(y+1)/2) 令T=d*t 设f(T)= T可以分块.又由于μ是积性函数,积性函数的约束和仍是积性函数,所以f也是积性函数,可以O(n)线性筛求得.总时间复杂度为 具体筛法看代码. 代码: #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define mod…