省赛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,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),满足最大公约数是质数的对数的更多相关文章
- 省赛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 ...
- hdu 5053 (2014上海网赛L题 求立方和)
题目大意:给你L到N的范围,要求你求这个范围内的所有整数的立方和. Sample Input2 //T1 32 5 Sample OutputCase #1: 36Case #2: 224 # inc ...
- hdu 5443 (2015长春网赛G题 求区间最值)
求区间最值,数据范围也很小,因为只会线段树,所以套了线段树模板=.= Sample Input3110011 151 2 3 4 551 21 32 43 43 531 999999 141 11 2 ...
- 2017乌鲁木齐区域赛K(容斥原理【求指定区间内与n互素的数的个数】)
#include<bits/stdc++.h>using namespace std;const long long mod = 998244353;typedef const long ...
- 2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告
2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh ...
- 第十届蓝桥杯JavaB组省赛真题
试题 A: 组队 本题总分:5 分 [问题描述] 作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容. 每位球员担任 1 号位至 5 号位时的评分如下表所示. ...
- 2017年第六届数学中国数学建模国际赛(小美赛)C题解题思路
这篇文章主要是介绍下C题的解题思路,首先我们对这道C题进行一个整体的概括,结构如下: C题:经济类 第一问:发现危险人群. 发现:欺诈的方式开始.雇佣或浪漫的承诺. 数据→确定特定的经济萧条地区→确定 ...
- 洛谷 1440 求m区间内的最小值
洛谷 1440 求m区间内的最小值 题目描述 一个含有n项的数列(n<=2000000),求出每一项前的m个数到它这个区间内的最小值.若前面的数不足m项则从第1个数开始,若前面没有数则输出0. ...
- HDU-5532//2015ACM/ICPC亚洲区长春站-重现赛-F - Almost Sorted Array/,哈哈,水一把区域赛的题~~
F - Almost Sorted Array Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & ...
随机推荐
- win10搭建Java环境
一.下载地址 jdk和jre官方网址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 根据你的系统选择你需要 ...
- mysql启动提示mysql.host 不存在,启动失败的解决方法
图示: 日志: 190625 10:48:42 InnoDB: Started; log sequence number 0 130207190625 10:48:42 [ERROR] Fatal e ...
- cocos2d popSceneWithTransition()方法
要在CCDirector.h中增加如下方法: template <typename T> void popSceneWithTransition(float t) { CCASSERT(_ ...
- 表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的
jQuery代码 <input value="请输入用户名" type="text"> <input value="请输入密码&qu ...
- 文件操作-cp
Linux cp命令 也是我们在实际使用中非常常用的一个命令,主要用来复制文件.文件夹等.今天就来给大家介绍下 cp命令 的使用. 转载自 https://www.linuxdaxue.com/lin ...
- proto_ops和proto区别
**proto_ops:**该结构体包含了某个特定的"protocol family"的一系列functions. 其包含的functions和struct proto很类似,但是 ...
- docker 运行tomcat 并部署 java web项目
以下tomcat官方镜像中tomcat:7 和tomcat:8的目录. CATALINA_BASE: /usr/local/tomcat CATALINA_HOME: /usr/local/tomca ...
- node.js----服务器http
请求网址过程: 1.用户通过浏览器发送一个http的请求到指定的主机 2.服务器接收到该请求,对该请求进行分析和处理 3.服务器处理完成以后,返回对应的数据到用户机器 4.浏览器接收服务器返回的数据, ...
- 条款40:明智而审慎地使用多重继承(use multiple inheritance judiciously)
NOTE: 1.多重继承比单一继承复杂.它可能导致新的歧义性,以及对virtual继承的需要. 2.virtual 继承会增加大小 速度 初始化(及赋值)复杂度等等成本.如果virtual base ...
- 一、Numpy库与多维数组
# Author:Zhang Yuan import numpy as np '''重点摘录: 轴的索引axis=i可以理解成是根据[]层数来判断的,0表示[],1表示[[]]... Numpy广播的 ...