hdu 5317 RGCDQ (2015多校第三场第2题)素数打表+前缀和相减求后缀(DP)
2015-07-30 20:54
387 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5317
题意:F(x) 表示x的不同质因子的个数结果是求L,R区间中最大的gcd( F(i) , F(j) ),i、j在L,R区间内。
思路:因为2<=L < R<=1000000,所以他们的质因子最多的个数也就7个,也就是说1<=F(x)<=7,因为要求最大的GCD,所以只要知道在L,R区间内每个F(x)的情况就可以知道结果。
代码:
View Code
题意:F(x) 表示x的不同质因子的个数结果是求L,R区间中最大的gcd( F(i) , F(j) ),i、j在L,R区间内。
思路:因为2<=L < R<=1000000,所以他们的质因子最多的个数也就7个,也就是说1<=F(x)<=7,因为要求最大的GCD,所以只要知道在L,R区间内每个F(x)的情况就可以知道结果。
代码:
#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> using namespace std; const int X=1000010; bool isPrime[X+1]; int total;//计数 int prime[79000]; void getPrime() { total=0; memset(isPrime,true,sizeof(isPrime)); memset(prime,0,sizeof(prime)); for(int i=2;i<=X;i++) { if(isPrime[i]) prime[total++]=i; for(int j=0; j<total && i*prime[j]<=X; j++) { isPrime[i*prime[j]]=false; if(i%prime[j]==0) break; } } } int dp[X][9]; int num[X]; void getCot() { memset(num,0,sizeof(num)); for(int i=0;prime[i]<=1000000;i++) for(int j=prime[i];j<=1000000;j+=prime[i]) num[j]++; } void gao() { memset(dp,0,sizeof(dp)); dp[2][1]=1; for(int i=3;i<=1000000;i++) { int ans=num[i]; for(int j=1;j<=7;j++) dp[i][j]=dp[i-1][j]; dp[i][ans]++; } } int main() { int T,l,r,aa[10],ma; getPrime(); getCot(); gao(); scanf("%d",&T); while(T--) { ma=1; scanf("%d%d",&l,&r); for(int i=1;i<=7;i++) { aa[i]=dp[r][i]-dp[l-1][i]; if(aa[i]>=2&&i>ma) ma=i; } if(aa[6]>0&&aa[3]>0) ma=max(ma,3); else if(aa[6]>0&&aa[2]>0||aa[4]>0&&aa[2]>0) ma=max(ma,2); printf("%d\n",ma); } return 0; }
View Code
相关文章推荐
- 3D游戏场景管理概述
- HDU 5335 Walk Out
- C# delegate
- maven如何将项目引用的所有jar包复制到lib文件夹内
- Subsets
- hdoj 1565 方格取数(1) 【状压DP 基础题目】
- Zoiper Iphone android 通话推荐设置!
- 控制台下的计算器——C++实现
- WICED SDK 3.3.1
- Android AsyncTask的使用
- HOWTO: Be more productive
- ASP.NET MVC引用最新Newtonsoft.Json的异常问题解决办法
- refresh的停车场 SDUT 2088
- 如何在pom文件中引用本地jar包
- 前端开发性能优化
- HDOJ Ice_cream's world I 2120【并查集判断成环】
- 如何用 Parse 和 Swift 搭建一个像 Instagram 那样的应用?(2)
- RTP 与RTCP 解释. 含同步时间戳
- MySQL性能分析
- hdu5338 ZZX and Permutations(贪心、线段树)