[UVa11426]最大公约数之和——极限版II
题意:给出n,求:
\]
多组数据,\(n<=4*10^6\)
sol
今天心血来潮再来写一写式子
首先这里求的是无序对而且还不能相等所以说我第一遍样例都没过
那么如果你求出了\(\sum_{i=1}^{n}\sum_{j=1}^{n}\gcd(i,j)\),你就只要把这个答案减去\(\sum_{i=1}^{n}i\)再除以二就可以了。你可以当做是,你求出的那个东西就是一整个矩阵的和,而题目要求的只是正对角线上方的部分,所以减掉对角线上的再除以2就是答案。
接下来开始大力开式子(接下来我们求的是\(\sum_{i=1}^{n}\sum_{j=1}^{n}\gcd(i,j)\))。
\]
\]
\]
\]
然后线性筛这个函数
\]
求一个前缀和然后分块T
复杂度\(O(n+T\sqrt n)\)
code
#include<cstdio>
#include<algorithm>
using namespace std;
#define ll long long
const int N = 4000000;
int gi()
{
int x=0,w=1;char ch=getchar();
while ((ch<'0'||ch>'9')&&ch!='-') ch=getchar();
if (ch=='-') w=0,ch=getchar();
while (ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
return w?x:-x;
}
int pri[N+5],tot,zhi[N+5];
ll low[N+5],h[N+5];
void Mobius()
{
zhi[1]=low[1]=1;h[1]=1;
for (int i=2;i<=N;i++)
{
if (!zhi[i]) low[i]=pri[++tot]=i,h[i]=i-1;
for (int j=1;j<=tot&&i*pri[j]<=N;j++)
{
zhi[i*pri[j]]=1;
if (i%pri[j]==0)
{
low[i*pri[j]]=low[i]*pri[j];
if (low[i]==i)
h[i*pri[j]]=h[i]*pri[j];
else
h[i*pri[j]]=h[i/low[i]]*h[low[i]*pri[j]];
break;
}
low[i*pri[j]]=pri[j];
h[i*pri[j]]=h[i]*h[pri[j]];
}
}
for (int i=1;i<=N;i++)
h[i]+=h[i-1];
}
int main()
{
Mobius();
while (233)
{
int n=gi(),i=1;
if (n==0) break;
ll ans=0;
while (i<=n)
{
int j=n/(n/i);
ans+=(h[j]-h[i-1])*(n/i)*(n/i);
i=j+1;
}
printf("%lld\n",(ans-1ll*(n+1)*n/2)/2);
}
return 0;
}
[UVa11426]最大公约数之和——极限版II的更多相关文章
- UVa11426 最大公约数之和(正版)
题面 求\(\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}gcd(i, j)\) n<=4000000,数据组数T<=100 答案保证在64位带符号整数范围内(long ...
- 51nod1188 最大公约数之和 V2
考虑每一个数对于答案的贡献.复杂度是O(nlogn)的.因为1/1+1/2+1/3+1/4......是logn级别的 //gcd(i,j)=2=>gcd(i/2,j/2)=1=>phi( ...
- 51nod 1237 最大公约数之和 V3(杜教筛)
[题目链接] https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1237 [题目大意] 求[1,n][1,n]最大公约数之和 ...
- 51NOD 1237 最大公约数之和 V3 [杜教筛]
1237 最大公约数之和 V3 题意:求\(\sum_{i=1}^n\sum_{j=1}^n(i,j)\) 令\(A(n)=\sum_{i=1}^n(n,i) = \sum_{d\mid n}d \c ...
- 51 nod 1188 最大公约数之和 V2
1188 最大公约数之和 V2 题目来源: UVA 基准时间限制:2 秒 空间限制:262144 KB 分值: 160 难度:6级算法题 给出一个数N,输出小于等于N的所有数,两两之间的最大公约数 ...
- 51nod 1040 最大公约数之和(欧拉函数)
1040 最大公约数之和 题目来源: rihkddd 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 给出一个n,求1-n这n个数,同n的最大公约数的和.比如: ...
- 51nod 1040 最大公约数之和 欧拉函数
1040 最大公约数之和 题目连接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1040 Description 给 ...
- 51nod 1040 最大公约数之和
给出一个n,求1-n这n个数,同n的最大公约数的和.比如:n = 6 1,2,3,4,5,6 同6的最大公约数分别为1,2,3,2,1,6,加在一起 = 15 Input 1个数N(N <= ...
- 51Nod 最大公约数之和V1,V2,V3;最小公倍数之和V1,V2,V3
1040 最大公约数之和 给出一个n,求1-n这n个数,同n的最大公约数的和.比如:n = 6 1,2,3,4,5,6 同6的最大公约数分别为1,2,3,2,1,6,加在一起 = 15 输入 1个数N ...
随机推荐
- 构建企业级Nginx+Keepalived集群架构
随着Nginx在国内的发展潮流,越来越多的互联网公司都在使用Nginx. Nginx高性能.稳定性成为IT人士青睐的http和反向代理服务器,今天我们来实战构建Nginx+Keepalived高可用架 ...
- PHP两个日期之间的所有日期
我想得到两个日期之间的所有日期, 例如:输入两个日期,把这两个日期之间的所有日期取出来 如果是:2005-02-01至2005-02-05(同为一个月) 则为:2005-02-01,2 ...
- 洛谷 P2194 HXY烧情侣【Tarjan缩点】 分析+题解代码
洛谷 P2194 HXY烧情侣[Tarjan缩点] 分析+题解代码 题目描述: 众所周知,HXY已经加入了FFF团.现在她要开始喜(sang)闻(xin)乐(bing)见(kuang)地烧情侣了.这里 ...
- 应用负载均衡之LVS(三):使用ipvsadm以及详细分析VS/DR模式
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- Mysql(三)-2:数据类型
一 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 详细参考: http://www.runoob.com/mysql/mysql-data ...
- docker数据库
拉取镜像 # docker pull mysql: 创建docker数据库容器 # docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASS ...
- 用Git的hooks实现项目的自动部署
https://segmentfault.com/a/1190000003836345?_ea=386770 http://blog.csdn.net/wsyw126/article/details/ ...
- Ubuntu14.04+Nginx+MySql+PHP环境配置
http://www.cnblogs.com/gophper/p/4793711.html
- 软AP的实现------dhcpserver交叉编译
代码版本:dhcp-4.2.5-P1 cd dhcp--P1; ./configure --host=arm-XXX-linux ac_cv_file__dev_random=yes; cd ./bi ...
- Java中的return关键字
Java常见面试题之一: try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 请看下面程序就可以解释 ...