[spojDIVCNT1]Counting Divisors】的更多相关文章

定义 约定1:以下分数都是最简,且令$\frac{1}{0}$有意义,其大于其余分数,并称平行于$y$轴的直线斜率为$-\frac{1}{0}$ 分数加:对于分数$a=\frac{a_{1}}{a_{0}}$.$b=\frac{b_{1}}{b_{0}}$,定义$a\oplus b=\frac{a_{1}+b_{1}}{a_{0}+b_{0}}$ Farey neighbor:对于两个非负最简分数$a=\frac{a_{1}}{a_{0}}$和$b=\frac{b_{1}}{b_{0}}$,其为…
Counting Divisors Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 1604    Accepted Submission(s): 592 Problem Description In mathematics, the function d(n) denotes the number of divisors of p…
Counting Divisors Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 3170    Accepted Submission(s): 1184 Problem Description In mathematics, the function d(n) denotes the number of divisors of…
DIVCNT2 - Counting Divisors (square) DIVCNT3 - Counting Divisors (cube) 杜教筛 [学习笔记]杜教筛 (其实不算是杜教筛,类似杜教筛的复杂度分析而已) 你要大力推式子: 把约数个数代换了 把2^质因子个数 代换了 构造出卷积,然后大于n^(2/3)还要搞出约数个数的式子和无完全平方数的个数的容斥... .... 然后恭喜你,spoj上过不去... bzoj能过: #include<bits/stdc++.h> #define…
Counting Divisors Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) Problem Description In mathematics, the function d(n) denotes the number of divisors of positive integer n. For example, d(12)=6 because 1,2,3,4,…
地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6069 题目: Counting Divisors Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 1235    Accepted Submission(s): 433 Problem Description In mathem…
/** 题目:hdu6069 Counting Divisors 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6069 题意:求[l,r]内所有数的k次方的约数个数之和. 思路: 用(1+e1)*(1+e2)*...*(1+en)的公式计算约数个数. 素数筛出[l,r]内的素因子,然后直接计算结果.(一开始我用vector存起来,之后再处理,结果超时, 时间卡的很紧的时候,vector也会很占用时间.) */ #include<iostream>…
DIVCNT2 - Counting Divisors (square) #sub-linear #dirichlet-generating-function Let \sigma_0(n)σ​0​​(n) be the number of positive divisors of nn. For example, \sigma_0(1) = 1σ​0​​(1)=1, \sigma_0(2) = 2σ​0​​(2)=2 and \sigma_0(6) = 4σ​0​​(6)=4. LetS_2(…
题目 vjudge URL:Counting Divisors (square) Let σ0(n)\sigma_0(n)σ0​(n) be the number of positive divisors of nnn. For example, σ0(1)=1\sigma_0(1) = 1σ0​(1)=1, σ0(2)=2\sigma_0(2) = 2σ0​(2)=2 and σ0(6)=4\sigma_0(6) = 4σ0​(6)=4. Let S2(n)=∑i=1nσ0(i2).S_2(n…
Counting Divisors Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 2599    Accepted Submission(s): 959 Problem Description In mathematics, the function d(n) denotes the number of divisors of p…
题目链接 Problem Description In mathematics, the function d(n) denotes the number of divisors of positive integer n. For example, d(12)=6 because 1,2,3,4,6,12 are all 12's divisors. In this problem, given l,r and k, your task is to calculate the followin…
设 \[f(n)=\sum_{d|n}\mu^2(d)\] 则 \[\begin{eqnarray*}\sigma_0(n^2)&=&\sum_{d|n}f(d)\\ans&=&\sum_{i=1}^n\sigma_0(i^2)\\&=&\sum_{i=1}^n\sum_{d|i}\sum_{k|d}\mu^2(k)\\&=&\sum_{k=1}^n\mu^2(k)G(\lfloor\frac{n}{k}\rfloor)\end{eqnarr…
http://acm.tzc.edu.cn/acmhome/vProblemList.do?method=problemdetail&oj=SPOJ&pid=DIVCNT2 给出n求 其中是除数函数,0代表0次方. #include<algorithm> #include<cstdio> #include<cmath> #include<cstring> #include<iostream> #define ll long lon…
来自FallDream的博客,未经允许,请勿转载,谢谢. 设d(x)表示x的约数个数,求$\sum_{i=1}^{n}d(i^{3})$ There are 5 Input files. - Input #1: 1≤N≤10000, TL = 1s. - Input #2: 1≤T≤300, 1≤N≤10^8, TL = 20s. - Input #3: 1≤T≤75, 1≤N≤10^9, TL = 20s. - Input #4: 1≤T≤15, 1≤N≤10^10, TL = 20s. -…
题目描述 定义 \(d(n)\) 为 \(n\) 的正因数的个数,比如 \(d(2) = 2, d(6) = 4\). 令 $ S_1(n) = \sum_{i=1}^n d(i) $ 给定 \(n\),求 \(S_1(n)\). 输入格式 第一行包含一个正整数 \(T\) (\(T \leq 10^5\)),表示数据组数. 接下来的 \(T\) 行,每行包含一个正整数 \(n\) (\(n < 2^{63}\)). 输出格式 对于每个 \(n\),输出一行一个整数,表示 \(S_1(n)\)…
思路:对于n^k其实就是每个因子的个数乘了一个K.然后现在就变成了求每个数的每个质因子有多少个,但是比赛的时候只想到sqrt(n)的分解方法,总复杂度爆炸,就一直没过去,然后赛后看官方题解感觉好妙啊!通过类似素数筛法的方式,把L - R的质因子给分解,就可以在O(nlogn)的时间之内把所以的数给筛出来. /* gyt Live up to every day */ #include<cstdio> #include<cmath> #include<iostream>…
http://acm.hdu.edu.cn/showproblem.php?pid=6069 题意: 思路: 根据唯一分解定理,$n={a_{1}}^{p1}*{a2_{}}^{p2}...*{a_{m}}^{pm}$,那么n的因子数就是 n的k次方也是一样的,也就是p前面乘个k就可以了. 先打个1e6范围的素数表,然后枚举每个素数,在[ l , r ]寻找该素数的倍数,将其分解质因数. 到最后如果一个数没有变成1,那就说明这个数是大于1e6的质数.(它就只有0和1两种选择) #include<…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6069 题目意思:首先解释一下d[n]这个函数表示n有多少个因子,百度一下可以知道这个函数是一个非完全积性函数,d[n]=d[i]*d[j]当且仅当i*j=n,且i和j互质,现在求一个[l,r]区间的所有数d[i^k]的和. 思路:比赛场上知道xjb推出了题目给的这个公式d(n​^k​​)=(kc​1​​+1)(kc​2​​+1)...(kc​m​​+1),还是很容易推了的,可能百度也可以找到吧,还是…
题意:给定 l,r,k,让你求,其中 l <= r <= 1e12, r-l <= 1e6, k <= 1e7. 析:首先这个题肯定不能暴力,但是给定的区间较小,可以考虑筛选,n = p1^c1*p2^c2*....*pn^cn,那么 d(n) = (c1+1) * (c2+1) * ...*(cn+1). d(n^k) =  (kc1+1) * (kc2+1) * ...*(kcn+1),这样的话,我们只要求出每个数的素因子的个数就好,直接算还是不行,只能先把1-sqrt(n)之…
题目 求 \[\sum_{i=1}^n \sigma(i^k)\] 我们先来设一个函数\(f(i)=\sigma(i^k)\) 根据约数个数定理 \[f(p)=\sigma(p^k)=k+1\] \[f(p^c)=\sigma(p^{ck})=ck+1\] 这不就可以Min_25筛了吗 还是先求出来一个区间内的质数个数,一个质数的贡献显然是\(k+1\),之后上板子就好了 代码 #include<algorithm> #include<iostream> #include<c…
d(x)表示x的约数个数,让你求(l,r<=10^12,r-l<=10^6,k<=10^7) #include<cstdio> using namespace std; #define MOD 998244353ll #define MAXP 1000100 typedef long long ll; ll x,y; int T,K; bool isNotPrime[MAXP+10]; int num_prime,prime[MAXP+10]; void shai() { f…
设n=p_1^{c_1}p_2^{c_2}...p_m^{c_m}n=p​1​c​1​​​​p​2​c​2​​​​...p​m​c​m​​​​,则d(n^k)=(kc_1+1)(kc_2+1)...(kc_m+1)d(n​k​​)=(kc​1​​+1)(kc​2​​+1)...(kc​m​​+1). 枚举不超过\sqrt{r}√​r​​​的所有质数pp,再枚举区间[l,r][l,r]中所有pp的倍数,将其分解质因数,最后剩下的部分就是超过\sqrt{r}√​r​​​的质数,只可能是00个或11个…
题面 洛谷 \(\sigma_0(i)\) 表示\(i\) 的约数个数 求\(S_k(n)=\sum_{i=1}^n\sigma_0(i^k)\mod 2^{64}\) 多测,\(T\le10^4,n,k\le10^{10}\) 题解 令\(f(i)=\sigma_0(i^k)\)首先可以发现几个性质 \[f(1)=1\] \[f(p)=k+1\] \[f(p^c)=kc+1\] \[f(ab)=f(a)f(b),\gcd(a,b)=1\] 也就是说\(f\)是个积性函数,直接上\(Min\_2…
题意:...就题面一句话 思路:比赛一看公式,就想到要用到约数个数定理 约数个数定理就是: 对于一个大于1正整数n可以分解质因数: 则n的正约数的个数就是 对于n^k其实就是每个因子的个数乘了一个K 然后现在就变成了求每个数的每个质因子有多少个,但是比赛的时候只想到sqrt(n)的分解方法,总复杂度爆炸,就一直没过去,然后赛后看官方题解感觉好妙啊! 通过类似素数筛法的方式,把L - R的质因子给分解,就可以在O(nlogn)的时间之内把所以的数给筛出来. 代码: /** @xigua */ #i…
题意 计算\(\sum_{i=l}^kd(i^k)(d_i代表i的因子数)\) 分析 比赛搞了3个小时都没搞出来,有两个思维上的trick 1.要先遍历素数,再遍历[L,R],而不是枚举每个数,然后对每个数进行质因数分解 2.比赛的时候我有想过枚举素数,但是忘记因子计算公式可以分开相乘,而不用一次性求粗来,导致我们队的崩盘,我要背锅!!! 具体的做法:枚举每个素数,并枚举[L,R]中的素数的倍数,对于每个倍数,统计因子个数,用b[i]代表第i个数的因子数,具体键代码 #include <bits…
http://acm.hdu.edu.cn/showproblem.php?pid=6069 [题意] 给定l,r,k,求 d(n)是n的因子个数 [思路] [Accepted] #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<algorithm> #include<queue>…
Output For each test case, print a single line containing an integer, denoting the answer.   Sample Input 3 1 5 1 1 10 2 1 100 3   Sample Output 10 48 2302     题意:就是那个公式 感觉还是题解讲的清楚 #include<iostream> #include<cstdio> #include<cstdlib> #i…
[Link]:http://acm.hdu.edu.cn/showproblem.php?pid=6069 [Description] 定义d(i)为数字i的因子个数; 求∑rld(ik) 其中l,r<=1012且r−l<=106 [Solution] 如果把一个数x质因数分解成p1a1∗p2a2∗...∗pnan 的形式; 可知数字x的因子个数为 (a1+1)∗(a2+1)∗...∗(an+1) 因为i还有k次方; 所以答案就是 (a1∗k+1)∗(a2∗k+1)∗...∗(an∗k+1)…
比赛的时候把公式扣出来了,,但是没有想到用筛法算公因子,,默默学习一下.. 题解:设n=p1^(c1)p2^{c2}...pm^{cm},n=p​1^​c​1*​​​​p​2​^c​2​​​​...p​m​^c​m​​​​,则d(n^k)=(k*c1+1)(k*c2+1)...(k*cm+1)d(n​k​​)=(kc​1​​+1)(kc​2​​+1)...(kc​m​​+1).然后由于l,r的值很大,但是l-r的范围还是可以接受的,所以我们用一个偏移数组 来存l<=n<=r数的d(n).然后就…
分析 首先,STO ywy OTZ,ywy TQL%%%! 说一下这道题用min_25筛怎么做. 容易发现,对于所有质数\(p\),都满足\(f(p)=4\),于是我们就可以直接通过\([1,x]\)内的质数的个数\(h(x)\)来求出\(g(x)=\sum_{i=1}^{x}f(i) \times [i \in prime]\)了,即\(g(x)\)可以等价地表示为\(g(x)=4 \times h(x)\).如何求\(h(x)\)是min_25筛的基本操作就不过多赘述了.而且进一步分析我们可…