求1~n内所有数对(x,y),gcd(x,y)=质数,的对数。

思路:用f[n]求出,含n的对数,最后用sum【n】求和。

对于gcd(x,y)=a(设x<=y,a是质数),则必有gcd(x/a,y/a)=1;所以我只要枚举i(设i=y/a),再枚举所有质数

他们乘积的f[i*a]值包括i的欧拉函数值。时间复杂度(n*质数个数)

#include<iostream>
#include<cstring>
using namespace std;
const int maxx=100010;
int mindiv[maxx+5],phi[maxx+5];
void genphi() //求出1~n内所有数的欧拉函数值
{
for(int i=1; i<=maxx; i++)
{
mindiv[i]=i;
}
for(int i=2; i*i<=maxx; i++) //筛法
{
if(mindiv[i]==i)
{
for(int j=i*i; j<=maxx; j+=i)
{
mindiv[j]=i;
}
}
}
phi[1]=1;
for(int i=2; i<=maxx; i++)
{
phi[i]=phi[i/mindiv[i]];
if((i/mindiv[i])%mindiv[i]==0)
{
phi[i]*=mindiv[i];
}
else
{
phi[i]*=mindiv[i]-1;
}
}
}
int pri[maxx+5];
int nump=0; //素数个数
int pp[maxx+5]; //存素数
void getp()
{
for(int i=2;i<=maxx;i++)
{
while(i<=maxx&&pri[i])i++;
pp[nump++]=i;
for(int j=i*2;j<=maxx;j=j+i)
pri[j]=1;
}
}
long long f[maxx+5];
long long sum[maxx+5];
int main()
{
getp();
genphi();
for(int i=1;i<=maxx;i++) // 枚举每个i,i=y/pp[j]()
{
for(int j=0;j<nump&&i*pp[j]<=maxx;j++) //枚举所有质数
{
if(i!=1) //(a,b)(b,a)算俩次。
f[i*pp[j]]+=phi[i]*2;
else f[i*pp[j]]+=phi[i];
}
}
long long tsum=0;
for(int i=1;i<=maxx;i++)
{
tsum+=f[i];
sum[i]=tsum;
}
int n;
while(cin>>n)
{
cout<<sum[n]<<endl;
} }

省赛i题/求1~n内所有数对(x,y),满足最大公约数是质数的对数的更多相关文章

  1. 省赛i题/求1~n内全部数对(x,y),满足最大公约数是质数的对数

    求1~n内全部数对(x,y),gcd(x,y)=质数,的对数. 思路:用f[n]求出,含n的对数.最后用sum[n]求和. 对于gcd(x,y)=a(设x<=y,a是质数),则必有gcd(x/a ...

  2. hdu 5053 (2014上海网赛L题 求立方和)

    题目大意:给你L到N的范围,要求你求这个范围内的所有整数的立方和. Sample Input2 //T1 32 5 Sample OutputCase #1: 36Case #2: 224 # inc ...

  3. hdu 5443 (2015长春网赛G题 求区间最值)

    求区间最值,数据范围也很小,因为只会线段树,所以套了线段树模板=.= Sample Input3110011 151 2 3 4 551 21 32 43 43 531 999999 141 11 2 ...

  4. 2017乌鲁木齐区域赛K(容斥原理【求指定区间内与n互素的数的个数】)

    #include<bits/stdc++.h>using namespace std;const long long mod = 998244353;typedef const long ...

  5. 2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

    2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh ...

  6. 第十届蓝桥杯JavaB组省赛真题

    试题 A: 组队 本题总分:5 分 [问题描述] 作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容. 每位球员担任 1 号位至 5 号位时的评分如下表所示. ...

  7. 2017年第六届数学中国数学建模国际赛(小美赛)C题解题思路

    这篇文章主要是介绍下C题的解题思路,首先我们对这道C题进行一个整体的概括,结构如下: C题:经济类 第一问:发现危险人群. 发现:欺诈的方式开始.雇佣或浪漫的承诺. 数据→确定特定的经济萧条地区→确定 ...

  8. 洛谷 1440 求m区间内的最小值

    洛谷  1440 求m区间内的最小值 题目描述 一个含有n项的数列(n<=2000000),求出每一项前的m个数到它这个区间内的最小值.若前面的数不足m项则从第1个数开始,若前面没有数则输出0. ...

  9. HDU-5532//2015ACM/ICPC亚洲区长春站-重现赛-F - Almost Sorted Array/,哈哈,水一把区域赛的题~~

    F - Almost Sorted Array Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & ...

随机推荐

  1. 关于bootstrap栅格系统的五等分以及八等分代码

    众所周知,bootstrap的栅格系统是基于十二等分的,今天拿到设计的设计稿一看,发现一个图片list上只有8张图片,然后上网查资料,发现只能自己写css代码实现,故写博客记录代码. 以下是八等分的代 ...

  2. tomcat性能优化 - 网络抄录

    tomcat默认参数是为开发环境制定,而非适合生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈. tomcat内存优化 linux修改TOMCAT_HOME/bin/catalina.s ...

  3. Alert and Action sheets and Timer and Animation

  4. 51nod 1265 四点共面——计算几何

    题目链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1265 以其中某一点向其它三点连向量,若四点共面,这三个向量定义的平行六面体 ...

  5. C++ STL容器之 map

    map 是一种有序无重复的关联容器. 关联容器与顺序容器不同,他们的元素是按照关键字来保存和访问的,而顺序元素是按照它们在容器中的位置保存和访问的. map保存的是一种 key - value 的pa ...

  6. Spring Cloud Stream在同一通道根据消息内容分发不同的消费逻辑

    应用场景 有的时候,我们对于同一通道中的消息处理,会通过判断头信息或者消息内容来做一些差异化处理,比如:可能在消息头信息中带入消息版本号,然后通过if判断来执行不同的处理逻辑,其代码结构可能是这样的: ...

  7. (原)UICollectionView的基本使用

    UICollectionView基本使用 学习iOS一段时间了,早听说了UICollectionView的强大一直没有机会使用,今天自己研究了一下. UICollectonView类似UITableV ...

  8. 双线性差值(由于分析sift源码 )

    双线性插值 双线性插值,顾名思义就是两个方向的线性插值加起来.所以只要了解什么是线性插值,分别在x轴和y轴都做一遍,就是双线性插值了. 线性插值的概念也非常简单粗暴,就是两个点A,B,要在AB中间插入 ...

  9. 解决php7.3 configure: error: off_t undefined

    //解决该问题:php7.3 configure: error: off_t undefined; check your library configuration # 添加搜索路径到配置文件echo ...

  10. js/jquery判断浏览器 & 停止加载

    JS获取浏览器信息 复制代码代码如下: 浏览器代码名称:navigator.appCodeName浏览器名称:navigator.appName浏览器版本号:navigator.appVersion对 ...