BZOJ 2818 Gcd 线性欧拉
题意:链接
方法:线性欧拉
解析:
首先列一下表达式
gcd(x,y)=z(z是素数而且x,y<=n).
然后我们能够得到什么呢?
gcd(x/z,y/z)=1;
最好还是令y>=x
则能够得到我们要的答案就是∑max(y/z)i=1phi(i)
而max(y/z)就是max(n/z)。
所以仅仅须要枚举一下质数z随便搞一下就好了,最好用前缀和记录
HINT:前缀和写树状数组的都是(*)
代码:
正常人做法1.1s
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 10000010
using namespace std;
typedef long long ll;
int n,tot;
int prime[N];
int phi[N];
ll sum[N];
int f[N];
void sieve()
{
    phi[1]=1;
    sum[1]=1;
    for(int i=2;i<=n;i++)
    {
        if(!f[i])
        {
            prime[++tot]=i;
            phi[i]=i-1;
        }
        for(int j=1;j<=tot,i*prime[j]<=n;j++)
        {
            f[i*prime[j]]=1;
            if(i%prime[j]==0)
            {
                phi[i*prime[j]]=phi[i]*prime[j];
                break;
            }else
            {
                phi[i*prime[j]]=phi[i]*phi[prime[j]];
            }
        }
        sum[i]=sum[i-1]+phi[i];
    }
}
int main()
{
    scanf("%d",&n);
    sieve();
    ll print=0;
    for(int i=1;i<=tot;i++)
    {
        int up=n/prime[i];
        print+=sum[up];
    }
    printf("%lld\n",print*2-tot);
}树状数组4.8s
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 10000010
using namespace std;
typedef long long ll;
int n,tot;
int prime[N];
int phi[N];
ll sum[N];
int f[N];
int lowbit(int x){return x&(-x);}
void update(int x,int p)
{
    while(x<=n)
    {
        sum[x]+=p;
        x+=lowbit(x);
    }
}
ll getsum(int x)
{
    ll ret=0;
    while(x)
    {
        ret+=sum[x];
        x-=lowbit(x);
    }
    return ret;
}
void sieve()
{
    phi[1]=1;
    update(1,1);
    for(int i=2;i<=n;i++)
    {
        if(!f[i])
        {
            prime[++tot]=i;
            phi[i]=i-1;
            update(i,phi[i]);
        }
        for(int j=1;j<=tot,i*prime[j]<=n;j++)
        {
            f[i*prime[j]]=1;
            if(i%prime[j]==0)
            {
                phi[i*prime[j]]=phi[i]*prime[j];
                update(i*prime[j],phi[i*prime[j]]);
                break;
            }else
            {
                phi[i*prime[j]]=phi[i]*phi[prime[j]];
                update(i*prime[j],phi[i*prime[j]]);
            }
        }
    }
}
int main()
{
    scanf("%d",&n);
    sieve();
    ll print=0;
    for(int i=1;i<=tot;i++)
    {
        int up=n/prime[i];
        print+=getsum(up);
    }
    printf("%lld\n",print*2-tot);
}BZOJ 2818 Gcd 线性欧拉的更多相关文章
- BZOJ 2818 Gcd 线性欧拉筛(Eratosthenes银幕)
		标题效果:定整N(N <= 1e7),乞讨1<=x,y<=N和Gcd(x,y)素数的数(x,y)有多少.. 思考:推,. 建立gcd(x,y) = p,然后,x / p与y / p互 ... 
- bzoj 2818  gcd 线性欧拉函数
		2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MB[Submit][Status][Discuss] Description 给定整数N,求1< ... 
- bzoj 2818 GCD 数论 欧拉函数
		bzoj[2818]Gcd Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Output 如题 Samp ... 
- BZOJ 2818 GCD 【欧拉函数 || 莫比乌斯反演】
		传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=2818 2818: Gcd Time Limit: 10 Sec Memory Limit ... 
- bzoj 2818 Gcd(欧拉函数 | 莫比乌斯反演)
		[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2818 [题意] 问(x,y)为质数的有序点对的数目. [思路一] 定义f[i]表示i之 ... 
- BZOJ 2818 GCD(欧拉函数)
		题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=37161 题意:gcd(x, y) = 质数, 1 <= x, ... 
- 【BZOJ】2818: Gcd(欧拉函数+质数)
		题目 传送门:QWQ 分析 仪仗队 呃,看到题后感觉很像上面的仪仗队. 仪仗队求的是$ gcd(a,b)=1 $ 本题求的是$ gcd(a,b)=m $ 其中m是质数 把 $ gcd(a,b)=1 $ ... 
- HYSBZ 2818 Gcd【欧拉函数/莫比乌斯】
		I - Gcd HYSBZ - 2818 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Output 如题 Sample In ... 
- 【BZOJ】2818: Gcd(欧拉函数/莫比乌斯)
		http://www.lydsy.com/JudgeOnline/problem.php?id=2818 我很sb的丢了原来做的一题上去.. 其实这题可以更简单.. 设 $$f[i]=1+2 \tim ... 
随机推荐
- P2134 百日旅行 (斜率优化,DP)
			题目链接 Solution 斜率优化\(DP\). 今天下午才打的第一道题 QwQ... \(90\) 分很简单,一个简单的递推. 令 \(f[i]\) 为最后一天旅游的花费, \(g[i]\) 为最 ... 
- foj 2144 三位几何+区间覆盖
			题目大意:一个人站在三维坐标系下的原点处用炮打蚊子,给出n个蚊子的起始坐标跟单位时间匀速移动的方向向量,距离他R以内的蚊子都可以打到,不过他也需要休息,没蚊子的时候也可以休息下.求他要起来多少次打蚊子 ... 
- 2017.8.1 Noip2018模拟测试赛(十七)
			日期: 八月第一天 总分: 300分 难度: 提高 ~ 省选 得分: 100分(不应该啊!) 题目目录: T1:战争调度 T2:选数 T3:由乃的OJ 赛后心得: MMP,首先第一题花了大概 ... 
- 如何发布第一个属于自己的npm包
			原文:https://segmentfault.com/a/1190000013940567 什么是NPM? NPM是随同NodeJS一起安装的javascript包管理工具,能解决NodeJS代码部 ... 
- PHPCMS内链设置,PHPCMS关联链接设置
			需求: 在网站中的关键词,自动加上链接. 在PHPCMS中叫做“关联链接”,在DEDECMS中叫做TAG标签. 第1步:后台 -> 扩展 -> 关联链接 -> 添加关联链接: 第2步 ... 
- Glide加载图片问题记录
			Glide加载图片相比于Picasso而言性能较好,又比Fresco轻巧,而且又支持加载gif动图,是Google 推荐.专注平滑的滚动.简单易用.可扩展的一款图片加载框架.但是使用时还是会遇到一些问 ... 
- Codeforces Gym101606 C.Cued In (2017 United Kingdom and Ireland Programming Contest (UKIEPC 2017))
			C Cued In 这个题是打球的.都忘了写的什么了... 代码: 1 #include<iostream> 2 #include<cstring> 3 #include< ... 
- Centos7源码安装MySQL5.7
			a.连接数据库报111 从一台linux远程连接另一台linux上的MySQL,出现ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx. ... 
- [ZJOI 2016] 小星星
			4455: [Zjoi2016]小星星 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 653 Solved: 400[Submit][Status] ... 
- extjs常用技巧
			grid http://extjs.org.cn/node/590 监听 http://extjs.org.cn/node/593 总结 http://extjs.org.cn/node/641 常用 ... 
