Luogu2398 GCD SUM】的更多相关文章

Luogu2398 GCD SUM 求 \(\displaystyle\sum_{i=1}^n\sum_{j=1}^n\gcd(i,j)\) \(n\leq10^5\) 数论 先常规化式子(大雾 \[\displaystyle\sum_{i=1}^n\sum_{j=1}^n\gcd(i,j)\\=\displaystyle\sum_{k=1}^n\sum_{i=1}^n\sum_{j=1}^n{\ k\times[\gcd(i,j)=k]}\\=\displaystyle\sum_{k=1}^n…
GCD SUM Time Limit: 8000/4000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) SubmitStatisticNext Problem Problem Description 给出N,M执行如下程序:long long  ans = 0,ansx = 0,ansy = 0;for(int i = 1; i <= N; i ++)   for(int j = 1; j <= M; j ++)     …
GCD SUM Time Limit: 8000/4000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) SubmitStatus Problem Description 给出N,M执行如下程序:long long  ans = 0,ansx = 0,ansy = 0;for(int i = 1; i <= N; i ++)   for(int j = 1; j <= M; j ++)       if(gcd(i,j)…
题目:GCD SUM 题目链接:http://www.bnuoj.com/v3/problem_show.php?pid=39872 算法:莫比乌斯反演.优化 #include<stdio.h> #define N 100001 typedef long long LL; }; ; int mu[N]; LL f[N],ff[N]; //缩短时间 /* 莫比乌斯函数mu[i]的定义: 1. 如果 i 是素数,那么mu[i]为-1; 2. 如果 i 是由多个不同的素数组成的,那么mu[i]为-1…
题目传送门 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…
P2398 GCD SUM一开始是憨打表,后来发现打多了,超过代码长度了.缩小之后是30分,和暴力一样.正解是,用f[k]表示gcd为k的一共有多少对.ans=sigma k(1->n) k*f[k].g[k]表示f[k]+f[2*k]+...+f[(n/k)*k];so f[k]=g[k]-(f[2*k]+...+f[(n/k)*k])g[k]=(n/k)*(n/k)比如g[5] (5,5,10,15..20)复杂度是调和级数 nlnn #include<iostream> #incl…
洛谷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 这道题的做法貌似很多...如果你同时会狄利克雷卷积和莫比乌斯反演的话也可以强…
GCD SUM 求 \[\sum_{i=1}^n\sum_{j=1}^n\gcd(i,j) \] 将原式变换得到 \[\sum_{d=1}^nd\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{n}{d}\rfloor}[\gcd(i,j)=1] \] 别着急莫比乌斯反演,我们知道 \[\varphi(n)=\sum_{i=1}^n[\gcd(i,n)=1] \] 所以原式可化为 \[\sum_{d=1}^nd\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 题解 这东西其实就是\(\large\sum_{i=1}^n\sum_{j=1}^ngcd(i…
题目描述 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的倍数的…