【SDOI 2015】约数个数和】的更多相关文章

下文中所有讨论都在数论函数范围内开展. 数论函数指的是定义域为正整数域, 且值域为复数域的函数. 数论意义下的和式处理技巧 因子 \[ \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} = \…
Description  设d(x)为x的约数个数,给定N.M,求 $\sum^N_{i=1}\sum^M_{j=1}d(ij)$ Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M. Output T行,每行一个整数,表示你所求的答案. Sample Input 2 7 4 5 6 Sample Output 110 121 HINT 1<=N, M<=50000 1<=T<=50000 题解 先给出一个结论: $$…
Description: 共\(T \le 5 \times 10^4\)组询问, 每组询问给定\(n\)和\(m\), 请你求出 \[ \sum_{i = 1}^n \sum_{j = 1}^m \sigma_0 (ij) \] Solution: 先给出一个结论: \[ \sigma_0(ij) = \sum_{a | i} \sum_{b | j} [\gcd(a, b) = 1] \] 证明: 我们令\(i = p_1^{a_1} p_2^{a_2} \cdots\), \(j = p_…
题意 设\(d(x)\)为\(x\)的约数个数,求\(\sum_{i=1}^{n}\sum_{j=1}^{m}d(ij)\). 题解 首先证个公式: \[d(ij) = \sum_{x|i}\sum_{y|j} [gcd(x,y)=1]\] 可以这么考虑:利用唯一分解定理把\(i,j\)分解,即: $i=\prod_{k = 1}^{m} p_k^{c_k},j=\prod_{k=1}^m p_k^{d_k} $ 那等式左边显然为\(\prod(c_k+d_k+1)\), 然后考虑等式右边在干什…
Problem Description 设 \(d(x)\) 为 \(x\) 的约数个数,给定 \(N\).\(M\),求 \[ \sum_{i=1}^N \sum_{j=1}^M d(ij) \] Input Format 输入文件包含多组测试数据. 第一行,一个整数 \(T\),表示测试数据的组数. 接下来的 \(T\) 行,每行两个整数 \(N\).\(M\). Output Format \(T\) 行,每行一个整数,表示你所求的答案. Sample Input 2 7 4 5 6 Ou…
2015 题意:\(d(i)\)为i的约数个数,求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m d(ij)\) \(ij\)都爆int了.... 一开始想容斥一下用\(d(i)\)和\(d(j)\)算\(d(ij)\),发现不行... 然后翻题解看到了一步好神的转化: \[ d(nm) = \sum_{i\mid n} \sum_{j\mid m} [gcd(i,j)=1] \] 晚上再补吧还是没拿草稿纸... 补: \(Proof.\) 首先注意约数个数…
[BZOJ 3992] [SDOI 2015] 序列统计(DP+原根+NTT) 题面 小C有一个集合S,里面的元素都是小于质数M的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数列中的每个数都属于集合S.小C用这个生成器生成了许多这样的数列.但是小C有一个问题需要你的帮助:给定整数x,求所有可以生成出的,且满足数列中所有数的乘积mod M的值等于x的不同的数列的有多少个.小C认为,两个数列{Ai}和{Bi}不同,当且仅当至少存在一个整数i,满足Ai≠Bi.另外,小C认为这个…
题意: \(T(1 \le T \le 50000)\)次询问,每次给出\(n, m(1 \le n, m \le 50000)\),求\(\sum_{i=1}^{n} \sum_{j=1}^{m} d(ij)\),其中\(d(n)\)表示\(n\)的约数个数 分析 有个结论: $$\sum_{x_1}^{y_1} \sum_{x_2}^{y_2} \cdots \sum_{x_k}^{y_k} d(x_1 x_2 \cdots x_k) = \sum_{x_1}^{y_1} \sum_{x_2…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1492 这里先讲一下约数个数定理: 对于正整数x,将其质因分解为 x = pow(p1, a) * pow*(p2, b) * pow(p3, c) * ... 则其约数个数为:num(x) = (a+1) * (b+1) * (c+1) *... 推导: 由约数定义可知p1^a1的约数有:p1^0, p1^1, p1^2......p1^a1 ,共(a1+1)个;同理p2^a2的约数有(a2+1)个…
题目链接 题意:输入两个整数L,U(L <= U <= 1000000000, u - l <= 10000),统计区间[L,U]的整数中哪一个的正约数最多,多个输出最小的那个 本来想着用欧拉函数,打个表求所有的约数个数,但是u太大,直接暴力求解 利用唯一分解定理,刷选出根号1000000000的素数,对l,u区间的每一个数进行分解 #include <iostream> #include <cstdio> #include <algorithm> #…
Description  设d(x)为x的约数个数,给定N.M,求     Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M.   Output T行,每行一个整数,表示你所求的答案.   Sample Input 2 7 4 5 6 Sample Output 110 121 HINT 1<=N, M<=50000 1<=T<=50000   这篇blog讲得很不错http://blog.codebursts.co…
Description 设\(d(x)\)为\(x\)的约数个数,给定\(N,M\),求\[\sum_{i=1}^{N}\sum_{j=1}^{M}d(ij)\]. Input 输入文件包含多组测试数据. 第一行,一个整数\(T\),表示测试数据的组数. 接下来的\(T\)行,每行两个整数\(N,M\). Output \(T\)行,每行一个整数,表示你所求的答案. Sample Input 2 7 4 5 6 Sample Output 110 121 HINT \(1 \le N, M \l…
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4542 小明系列故事--未知剩余系 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 889    Accepted Submission(s): 207 Problem Description "今有物不知其数,三三数之有二,五五数之有三,七七数之有…
Description  设d(x)为x的约数个数,给定N.M,求     Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M.   Output T行,每行一个整数,表示你所求的答案.   Sample Input 2 7 4 5 6 Sample Output 110 121 HINT 1<=N, M<=50000 1<=T<=50000     数论……终于还是的在神犇博客的帮助下才写得出……T_T…… 最后推出…
[BZOJ3994]约数个数和(莫比乌斯反演) 题面 求\[\sum_{i=1}^n\sum_{j=1}^md(ij)\] 多组数据\((<=50000组)\) \(n,m<=50000\) 其中\(d(x)\)是\(x\)的约数个数 题解 orz ZSY 巨佬 根据玄学(我也不知道为什么)的公式 \[d(ij)=\sum_{x|i}\sum_{y|j}[gcd(x,y)==1]\] 所以,所求等于 \[\sum_{i=1}^n\sum_{j=1}^m\sum_{u|i}\sum_{v|j}[…
BZOJ_3994_[SDOI2015]约数个数和_莫比乌斯反演 Description  设d(x)为x的约数个数,给定N.M,求   Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M. Output T行,每行一个整数,表示你所求的答案. Sample Input 2 7 4 5 6 Sample Output 110 121 HINT 1<=N, M<=50000 1<=T<=50000 基本同BZOJ4176…
P4714 「数学」约数个数和 题意(假):每个数向自己的约数连边,给出\(n,k(\le 10^{18})\),询问\(n\)的约数形成的图中以\(n\)为起点长为\(k\)的链有多少条(注意每个点都有自环) 这样想是做不出来题的. 正常的题意是:询问\(n\)的约数的约数的....(共\(k\)次复读后)约数个数和. 考虑\(f_k(n)\)表示答案. 显然有\(f_{k}(n)=\sum_{d|n}f_{k-1}(d)\) 注意到用数论卷积的形式可以表示为 \[ \mathtt f_k=\…
Problem bzoj3994 洛谷3327 题意:设 \(d(x)\) 为 \(x\) 的约数个数,给定 \(N,M\),求\(\sum_{i=1}^N\sum_{j=1}^Md(ij)\) \(1\leq N,M,T\leq 5\times 10^4\) Solution 第一次推出莫反式 ♪(^∇^*) 以下部分中小括号代表\(\gcd\),中括号代表取布尔值 一开始想枚举约数然后看有多少倍数出现过的,发现不好弄,转而想到 \(xy\) 的因数一定是 \(x\) 的因数和 \(y\) 的…
又是恶心的莫比乌斯反演,蒟蒻我又是一脸懵逼的被CXR dalao狂虐. 题目要求\(ans=\sum_{i=1}^n \sum_{j=1}^m d(ij)\),其中\(d(ij)\)表示数\(x\)的约数个数 这道题的一大难点就在于\(d(ij)\)这个函数,它有一个重要的性质: \[d(ij)=\sum_{x|i}\sum_{y|i}[\gcd(i,j)=1]\] 大致的证明思路就是对于\(i,j\)的所有约数,为了避免重复计算,我们只取互质的一对. 知道了这个就是反演的套路了(如果不知道为什…
http://www.lydsy.com/JudgeOnline/problem.php?id=3994 (题目链接) 题意 多组询问,给出${n,m}$,求${\sum_{i=1}^n\sum_{j=1}^m d(i×j)}$,${d(i×j)}$为${ij}$的约数个数. Solution 看到这个式子感觉无从下手,这个${d(ij)}$比较丑,有一个比较经典的公式:$${d(nm)=\sum_{i|n}\sum_{j|m} [gcd(i,j)=1]}$$ 这个是怎么得来的呢.每一个${nm…
http://www.lydsy.com/JudgeOnline/problem.php?id=3994 设d(x)为x的约数个数,给定N.M,求 用到的一个结论: 证明: 枚举n的约数i,枚举m的约数j 那么i*j一定是n*m的约数 d(nm)相当于不同的i*j 的个数 若i, j 不互质 设gcd(i,j)= g , 则 i= p*g ,j=q*g 那么i*j 可以 组成两个互质数p*g*g 和 q 的乘积 p*g*g 和 q 也都输n和m的约数 即p*g*g 和 q 也都是合法的i,j 所…
Description 设d(x)为x的约数个数,给定1<=T<=50000 组1<=N, M<=50000 ,求 有一个公式\[d(ij)=\sum_{x|i}\sum_{y|j}[gcd(i,j)=1]\] 先简单证明一下 如果\(p_1^{k_1}|i\wedge p_1^{k_2}|j\) ,那么对于\(ij\)的一个因子\(p_1^{k_3}\) ,如果\(k_3\leq k_1\)我们就假设\(p_1^{k_3}\)全部来自于\(i\),不然就是\(k_1\)来自于\(…
Description 设d(x)为x的约数个数,给定N.M,求 Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M. Output T行,每行一个整数,表示你所求的答案. Sample Input 2 7 4 5 6 Sample Output 110 121 HINT 1<=N, M<=50000 1<=T<=50000 Solution 莫比乌斯反演 但这题更多的是套路 首先,一个神奇的东东:\(d(nm)= \…
3994: [SDOI2015]约数个数和 Time Limit: 20 Sec  Memory Limit: 128 MB Description  设d(x)为x的约数个数,给定N.M,求   Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M.  Output T行,每行一个整数,表示你所求的答案. Sample Input 2 7 4 5 6 Sample Output 110 121 HINT 1<=N, M<=5000…
P3327 [SDOI2015]约数个数和 神犇题解(转) 无话可补 #include<iostream> #include<cstdio> #include<cstring> #define re register using namespace std; template<typename T>T max(T &a,T &b){return a>b?a:b;} template<typename T>T min(T &a…
慢慢化柿子吧 要求的是这个 \[\sum_{i=1}^N\sum_{j=1}^Md(ij)\] 神奇的约数个数函数有一个这样的性质 \[d(ij)=\sum_{x|i}\sum_{y|j}[(x,y)=1]\] 试着从唯一分解定理的角度去理解,将\(i,j\)分别分解质因数 显然\(d(ij)\)应该等于每一个\(p\)在\(i,j\)中分解出来的指数加起来加1再相乘 所以分别枚举所有约数的话,保证这对约数互质就可以求出所有约数了 之后现在的答案变成了 \[\sum_{i=1}^N\sum_{j…
求\(\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}d(ij)\) 不知道怎么讲..... 首先考虑\(d(ij)\)究竟是什么 首先,很自然地想到,既然是求\(ij\)的约数个数 因此就枚举\(i,j\)的约数 即\(d(ij) =\sum\limits_{x|i}\sum\limits_{y|j}...\) 注意到,我们不能重复地统计 我们从唯一分解得形式来考虑 因为多个质因子个和一个质因子的情况是一致的 因此我们考虑一个质因子 假设\(i = p^a,…
算法提高 约数个数   时间限制:1.0s   内存限制:512.0MB      输入一个正整数N,输出其约数的个数. 样例输入 12 样例输出 6 样例说明 12的约数包括:1,2,3,4,6,12.共6个.   #include<stdio.h> int main(){ int n; ; scanf("%d",&n); ) ; ;i<=n/;i++){ ){ sum++; } } printf();//任何数本身为其一个约数 }…
Description  设d(x)为x的约数个数,给定N.M,求   Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M. Output T行,每行一个整数,表示你所求的答案. Sample Input 2 7 4 5 6 Sample Output 110 121 HINT 1<=N, M<=50000 1<=T<=50000 思路:关键在于要知道X*Y的因子,为X的因子i和Y因子j的且满足i和j互质的个数. 然后…
3994: [SDOI2015]约数个数和 Description  设d(x)为x的约数个数,给定N.M,求   Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M. Output T行,每行一个整数,表示你所求的答案. Sample Input 2 7 4 5 6 Sample Output 110 121 HINT 1<=N, M<=50000 1<=T<=50000 Source Round 1 感谢yts19…