RGCDQ (HDU5317)
来源:互联网 发布:js页面大小改变事件 编辑:程序博客网 时间:2024/04/29 19:17
RGCDQ
题目描述
Mr. Hdu is interested in Greatest Common Divisor (GCD). He wants to find more and more interesting things about GCD. Today He comes up with Range Greatest Common Divisor Query (RGCDQ). What’s RGCDQ? Please let me explain it to you gradually. For a positive integer x, F(x) indicates the number of kind of prime factor of x. For example F(2)=1. F(10)=2, because 10=2*5. F(12)=2, because 12=2*2*3, there are two kinds of prime factor. For each query, we will get an interval [L, R], Hdu wants to know maxGCD(F(i),F(j)) (L≤i< j≤R)
题意
定义函数f(x)表示:x的不同素因子个数。
给定L和R(L<=i< j<=R),求区间内任意不相等的两个数f(x)的最大公约数的最大值。
解法
2*3*5*7*11*13*17 > 10 ^ 6 ,所以f(x)的最大值为7.
先用筛素数的方法求出每个数素因子的个数,然后记录一下每个数i是否有j个素因子(f[i][j])再求出其前缀和就是2到i中素因子个数为j的数的个数。
对于每次查询[l, r],如果存在j对任意k(j < k)有sum[l-1][j] - sum[r][j] > 1并且sum[l-1][k] - sum[r][k] <= 1, 那么说明存在 l <= x < y <=r 使 gcd(f(x),f(y)) = f(x) = f(y) 即此时的f(x)为答案。
#include<cstdio>#include<cstring>#include<cstdlib>using namespace std;const int pn = 1000000;int mark[pn+1];int sum[pn+1][8];//,prime[pn+1],cnt; // mark[i]代表i的最小素因子,prime[i]代表第i个素数void Get_Prime(int n=pn){ for(int i=2; i<=n; i++){ if(!mark[i])// mark[i] = prime[cnt++] = i; for(int j = i; j <= n; j += i){ mark[j]++; } }}void init(){ for(int i = 2; i <= pn; i++){ for(int j = 1; j <= 7; j++) sum[i][j] = sum[i-1][j]; sum[i][mark[i]]++; }}int main(){ Get_Prime(); init(); int T; scanf("%d",&T); while(T--){ int l, r; scanf("%d%d",&l,&r); int ans = 1; for(int i = 7; i > 0; i--) { if(sum[r][i] - sum[l-1][i] > 1){ ans = i; break; } } printf("%d\n",ans); } return 0;}
- hdu5317 RGCDQ
- HDU5317.RGCDQ
- hdu5317 RGCDQ
- RGCDQ (HDU5317)
- hdu5317 RGCDQ
- Hdu5317 RGCDQ
- hdu5317 RGCDQ 统计
- hdu5317 RGCDQ(dp)
- HDU5317 RGCDQ 质因子分解
- 解题报告 之 HDU5317 RGCDQ
- HDU5317 RGCDQ(数论素筛)
- HDU5317:RGCDQ (数学 & 二分)
- hdu5317 RGCDQ (质因子种数+预处理)
- hdu5317 RGCDQ(15多校第三场1002)(大暴力)
- hdu5317(2015多校3)--RGCDQ(素数筛+枚举)
- 2015 Multi-University Training Contest 3 1002RGCDQ(hdu5317)
- [数学]多校联合第三场 hdu5317 RGCDQ
- 2015年多校联合训练第三场RGCDQ(hdu5317)
- 3.1 字符串移位包含问题
- 测量webView页面性能技术方案
- 事件驱动仿真
- poj4474 枚举
- C++类库:OTL连接MySQL ODBC数据库(insert, update, select)
- RGCDQ (HDU5317)
- Maven-Missing artifact 的解决办法
- 如何算音频PTS
- Ubuntu MySQL允许远程连接数据库访问
- leetcode 208: Implement Trie (Prefix Tree)
- C语言编写控制台下PE分析工具(三)
- HDOJ 5343 MZL's Circle Zhou 后缀自动机
- hdu5373 The shortest problem(模拟,数学)
- 机器学习算法面试口述(7):分类小结