luogu2398 SUM GCD】的更多相关文章

题目大意:求sum i(1->n) (sum j(1->n) (gcd(i,j))). 对于每对(i,j)都来一次gcd很慢,但是我们知道,一个约数i在1~n范围内是n/i个数的约数.gcd也是个约数,如果能利用到这一点,不就可以同时处理很多对(i,j)了吗? 我们看看最大公约数等于i的数对(x,y)个数f[i]是多少,再让f[i]*(2*i-1)就是这个最大公因数对答案ans做出的贡献. f[i]=公约数中含有i的个数-sum j(i->min(m,n)/i) (f[i*j]).容斥原…
题目描述 for i=1 to n for j=1 to n sum+=gcd(i,j) 给出n求sum. gcd(x,y)表示x,y的最大公约数. 输入输出格式 输入格式: n 输出格式: sum 输入输出样例 输入样例#1: 2 输出样例#1: 5 说明 数据范围 30% n<=3000 60% 7000<=n<=7100 100% n<=100000 题目的意思大概是这样的 O(n2)枚举当然是不行的啦. 考虑枚举k,求gcd为k的“数对”的个数. 而可以证明gcd为k的“数…
题目地址 题目链接 题目描述 for i=1 to n for j=1 to n sum+=gcd(i,j) 给出n求sum. gcd(x,y)表示x,y的最大公约数. 输入输出格式 输入格式: n 输出格式: sum 输入输出样例 输入样例#1: 复制 2 输出样例#1: 复制 5 说明 数据范围 30% n<=3000 60% 7000<=n<=7100 100% n<=100000 题解 这东西其实就是\(\large\sum_{i=1}^n\sum_{j=1}^ngcd(i…
题目传送门 GCD SUM 题目描述 for i=1 to n for j=1 to n sum+=gcd(i,j) 给出n求sum. gcd(x,y)表示x,y的最大公约数. 输入输出格式 输入格式: n 输出格式: sum 输入输出样例 输入样例#1: 2 输出样例#1: 5 说明 数据范围 30% n<=3000 60% 7000<=n<=7100 100% n<=100000 分析: 无聊的出题人出的无聊的数学题. 这里博主用了一种比较暴力的思想,直接枚举以$1\thick…
题目描述 for i=1 to n for j=1 to n sum+=gcd(i,j) 给出n求sum. gcd(x,y)表示x,y的最大公约数. 输入输出格式 输入格式: n 输出格式: sum 输入输出样例 输入样例#1: 2 输出样例#1: 5 说明 数据范围 30% n<=3000 60% 7000<=n<=7100 100% n<=100000 分析:求sum我们不可能把所有gcd全部求出来,但是有很多一样的gcd,因此我们可以统计每个gcd的个数,如gcd=k的倍数的…
洛谷P2398 GCD SUM 题目描述 for i=1 to n for j=1 to n sum+=gcd(i,j) 给出n求sum. gcd(x,y)表示x,y的最大公约数. 输入输出格式 输入格式: n 输出格式: sum 输入输出样例 输入样例#1: 2 输出样例#1: 5 说明 数据范围 30% n<=3000 60% 7000<=n<=7100 100% n<=100000 Solution 这道题的做法貌似很多...如果你同时会狄利克雷卷积和莫比乌斯反演的话也可以强…
题目描述 for i=1 to n for j=1 to n sum+=gcd(i,j) 解析 给出n求sum. gcd(x,y)表示x,y的最大公约数. 直接枚举复杂度为\(O(n^2)\),显然无法承受. 我们需要寻找更优的算法. 首先,打表找规律,当\(n=10\)时,是这样的 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 2 1 2 1 2 1 1 3 1 1 3 1 1 3 1 1 2 1 4 1 2 1 4 1 2 1 1 1 1 5 1 1 1 1 5 1 2 3 2…
http://lightoj.com/volume_showproblem.php?problem=1220 题目大意: 给你一个x,求出满足 x=b^p, p最大是几. 分析:x=p1^a1*p2^a2*...*pn^an; p最大是gcd(a1,a2,...,an). ///他该诉你x,b,p都是整数,所以x,b有可能是负数.当x是负数时,p不能是偶数. #include<stdio.h> #include<string.h> #include<stdlib.h>…
题目大意:求gcd(1,2)+gcd(1,3)+gcd(2,3)+...+gcd(n-1,n) ----------------------------------------------------------------- 设f(i)=gcd(1,n)+...+gcd(n-1,n),则答案S(n)=f(2)+...+f(n) 如何求f 设g(n,i)表示满足gcd(x,n)=1且x<n的x个数,则f(n)=sum{i*g(n,i):i|n} gcd(x,n)=i的充要条件是x/i和n/i互质…
这两天刷了几个关于gcd的很类似的问题,总结一下: BZOJ2818 1<=x<=n,1<=y<=n,求满足gcd(x,y)=质数的个数 BZOJ2190 1<=x<=n,1<=y<=n,求满足gcd(x,y)=1(x.y互质)的个数 BZOJ2301 a<=x<=b,c<=x<=d,求满足gcd(x,y)=k的个数 HDU1695 1<=x<=m,1<=y<=n,求满足gcd(x,y)=d的个数 BZOJ20…