HDU 5317 RGCDQ (素因子分解+預處理)
題目連結:傳送門
題意:
求區間[l,r]所有數的素因子的種類的最大的最大公約數。。。額,不知道怎麼描述了。。。
比如說區間內的所有數的素因子種類分別為1,2,3,4,5,6,7那麼結果就是gcd(3,6)
分析:
資料的範圍是1~1000000,因子數最大為7,我們首先要預處理出所有數的數的因子數,但是因為
資料的範圍比較大我們不能直接暴力求結果,因為因子數的可能取值比較小,因此我們可以預處
理出每種取值數的字首和,然後就可以在O(1)的的時間內求出區間內每種取值的數。
程式碼如下:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 1e3+10;
int pri[maxn],cnt;
bool vis[maxn];
void getprime(){
cnt=0;
memset(vis,0,sizeof(vis));
for(int i=2;i<maxn;i++){
if(!vis[i]){
pri[cnt++]=i;
for(int j=i+i;j<maxn;j+=i)
vis[j]=1;
}
}
}
int num[1000001];
int sum[1000001][8];
void init(){
getprime();
int ff=0;
for(int i=0;i<1000001;i++){
int tmp = i;
num[i]=0;
for(int j=0;j<cnt&&pri[j]*pri[j]<=tmp;j++){
if(tmp%pri[j]==0){
num[i]++;
while(tmp%pri[j]==0) tmp/=pri[j];
}
}
if(tmp>1) num[i]++;
ff=max(num[i],ff);
}
sum[0][0]=0;sum[0][1]=0;sum[0][2]=0;sum[0][3]=0;
sum[0][4]=0;sum[0][5]=0;sum[0][6]=0;sum[0][7]=0;
for(int i=1;i<1000001;i++){
for(int j=1;j<=7;j++)
sum[i][j]=sum[i-1][j];
sum[i][num[i]]++;
}
}
int a[10];
int main()
{
init();
int t,l,r;
scanf("%d",&t);
while(t--){
scanf("%d%d",&l,&r);
int tag = 0;
for(int i=7;i>=1;i--)
a[i]=sum[r][i]-sum[l-1][i];
for(int i=7;i>=3;i--){
if(a[i]>=2){
tag = i;
break;
}
}
if(tag){
printf("%d\n",tag);
}
else{
if(a[3]>=1&&a[6]>=1){
puts("3");
continue;
}
else if((a[2]>=1&&a[4]>=1)||a[2]>=2){
puts("2");
continue;
}
else puts("1");
}
}
return 0;
}
相關文章
- HDU44979 GCD and LCM (素因子分解+計數)GC
- Find Terrorists(素數篩選+素因子分解)Error
- HDU 4497GCD and LCM(素數分解)GC
- CodeForces - 463E Caisa and Tree (dfs+素因子分解)AI
- HDU 2478 Slides(瞎搞,預處理)IDE
- HDU 4455 Substrings(預處理+dp)
- HDU 4542 小明系列故事——未知剩餘系 (DFS 反素數 篩子預處理)
- HDU3944 DP? (LUCAS定理+階乘預處理)
- HDU 5439 Aggregated Counting(找規律+預處理)
- HDU4675 GCD of Sequence(預處理階乘逆元+推公式)GC公式
- 影像行畫素處理
- webgl 影像處理2---影像畫素處理Web
- 質數判斷、質因子分解、質數篩
- 影象中的畫素處理
- 影像預處理
- 預處理指令
- 預處理命令
- hdu4288 離線處理線段樹
- hdu 1753 Java 高精度處理 大明A+BJava
- 資料預處理
- 影像預處理方法
- 4.【Python】分類演算法—Factorization Machine(FM,因子分解機)Python演算法Mac
- HDU5139 Formula (找規律+離線處理)ORM
- HDU5200 Trees (離線處理)
- HDU 4497 GCD and LCM(拆素數+組合)GC
- 藍橋杯 演算法訓練 素因子去重(Java)演算法Java
- 資料預處理 demo
- ACM-ICPC 2018 南京賽區網路預賽__J. Sum【尤拉篩法+質因子分解+思維】ACM
- hdu5435 數位dp(大數的處理)
- 【scikit-learn基礎】--『預處理』之 缺失值處理
- Python 影像處理 OpenCV (2):畫素處理與 Numpy 操作以及 Matplotlib 顯示影像PythonOpenCV
- nlp 中文資料預處理
- 機器學習一:資料預處理機器學習
- 文字檢測預處理地址
- 程式環境和預處理
- 影像預處理包括哪些東東?
- split用法與影像預處理
- 特徵工程之特徵預處理特徵工程