博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RGCDQ(线段树+数论)
阅读量:6220 次
发布时间:2019-06-21

本文共 1459 字,大约阅读时间需要 4 分钟。

题意:求n和m之间的全部数的素因子个数的最大gcd值。

分析:这题好恶心。看着就是一颗线段树。但本题有一定的规律,我也是后来才发现,我还没推出这个规律。就不说了,就用纯线段树解答吧。

由于个点数都小于1000000所以素因子个数不会超过7个所以建一个线段树,最以下一层是每一个节点的素因子个数为1,2。3,4,5,6。7的有多少个,父节点求和。终于查询的是n到m之间有多少个1,2,3。4。5,6,7然后存在就求一下gcd着最大就好了

本题最重要的时间和空间。显然线段数中的点不会非常大,所以採用short类型

代码例如以下:

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;int gcd(int a,int b){ return (b==0)?a:gcd(b,a%b);}const int N=100000;int prime[N]={0};int num_prime=0;bool isNotPrime[N]={1,1};void su1(){ for(long i = 2 ; i < N ; i ++){ if(!isNotPrime[i]) prime[num_prime++]=i; for(long j = 0 ; j < num_prime &&i*prime[j]
>1; if(id<=i)updat(id,j,l,i,2*mid); else updat(id,j,i+1,r,2*mid+1); a[mid][j]=a[2*mid][j]+a[2*mid+1][j];}int sum[8];void su(int l,int r,int mid,int ll,int rr){ if(l>=ll&&r<=rr){ for(int i=1;i<=7;i++) sum[i]+=a[mid][i]; return; } int i=(l+r)>>1; if(ll<=i)su(l,i,2*mid,ll,rr); if(rr>i)su(i+1,r,2*mid+1,ll,rr);}//建树,求和,这是重点int main(){ memset(a,0,sizeof(a)); su1();// for(int i=1;i<=100;i++){// if(isNotPrime[i])// cout<
<<" "<
<
>t; while(t--){ scanf("%d%d",&n,&m); memset(sum,0,sizeof(sum)); su(2,1000005,1,n,m); int ans=-1; for(int i=1;i<=7;i++) for(int j=1;j<=7;j++){ if(i==j){ if(sum[i]>1)ans=max(ans,gcd(i,j)); } else{ if(sum[i]>0&&sum[j]>0)ans=max(ans,gcd(i,j)); } }//这个地方就能够纯暴力了 printf("%d\n",ans); } return 0;}

转载地址:http://zpoja.baihongyu.com/

你可能感兴趣的文章
vue的双向绑定原理及实现
查看>>
Kettle的四大不同环境工具
查看>>
vs2017 vs2013等vs中如何统计整个项目的代码行数
查看>>
AngularJS 1.x系列:AngularJS过滤器(4)
查看>>
注冊(十一)重注冊带有鉴权信息
查看>>
程序猿的量化交易之路(14)--Cointrader数据表(2)
查看>>
mysql string types ---- mysql 字符类型详解
查看>>
OpenGL实现通用GPU计算概述
查看>>
聊聊vue组件开发的“边界把握”和“状态驱动”
查看>>
独立python环境之virtualenv和virtualenvwrapper
查看>>
Android 源代码解析 之 setContentView
查看>>
HorizontalDragLayout-模仿QQclient的Item滑动删除
查看>>
2.6 查询转换
查看>>
[读书笔记]Java类载入过程
查看>>
三星Galaxy Tab S2上市,压制苹果之心凸显
查看>>
PJAX全局无刷新的设置方法~
查看>>
NGINX 配置404错误页面转向
查看>>
『科学计算』通过代码理解线性回归&Logistic回归模型
查看>>
寻找正在连接中的网络连接
查看>>
svn client命令
查看>>