hdoj5317【素数预处理】
//这个很好了。。。虽然是一般。。
int isp[1000100];
int p[1000100];
void init()
{
int sum=0;
int i,j;
fill(isp,isp+1000007,true);
for(i=2;i<=1000000;i++)
{
sum++;
if(!isp[i]) continue;
for(j=i+i;j<=1000000;j+=i)
{
sum++;
isp[j]=false;
}
}
int num=0;
for(i=2;i<=1000000;i++)
if(isp[i])
p[++num]=i;
}
题意:
F(x):对于x的素数因子的种类个数。
给t(<=1e6)个查询,每个查询给出L,R(<=1e6),求在区间[L,R]内求一个maxGCD(F(i),F(j))
F(i)肯定<7;
思路:
计数一下,然后后面直接搞;
用sum数组表示从1->i有数量j的个数。
最终他的个数有>=2的话可以,或者还有一种情况就是6/2或者6/3的最大公约数是2/3.后面就是手动枚举了一下。
其实弱学到的最好的就是这个线性搞出一个素数因子表。
#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;
bool isPrime[1000001];
int cnt[1000001];
int sum[1000001][8];
void Init()
{
fill(isPrime, isPrime + 1000001, true);
for(int i = 2; i <= 1000000; ++i)
{
if(!isPrime[i])
continue;
++cnt[i];
for(int j = i + i; j <= 1000000; j += i)
{
isPrime[j] = false;
++cnt[j];
}
}
for(int i = 2; i <= 1000000; ++i)
for(int j = 1; j <= 7; ++j)
sum[i][j] = sum[i - 1][j] + (cnt[i] == j ? 1 : 0);
}
int main()
{
Init();
int T;
scanf("%d", &T);
while(T--)
{
int l, r;
scanf("%d%d", &l, &r);
int cnt[8] = {0};
for(int i = 1; i <= 7; ++i)
cnt[i] = sum[r][i] - sum[l - 1][i];
if(cnt[7] >= 2)
printf("7\n");
else if(cnt[6] >= 2)
printf("6\n");
else if(cnt[5] >= 2)
printf("5\n");
else if(cnt[4] >= 2)
printf("4\n");
else if(cnt[3] >= 2 || (cnt[3] && cnt[6]))
printf("3\n");
else if(cnt[2] >= 2 ||
(cnt[2] && cnt[4]) ||
(cnt[2] && cnt[6]) ||
(cnt[4] && cnt[6]))
printf("2\n");
else
printf("1\n");
}
return 0;
}
/*1 2 3 4 5 6 7*/
/*
7 7 7
6 6 6
5 5 5
4 4 4
3 3 3 3 6
2 2 2 2 4 2 6 4 6
*/
hdoj5317【素数预处理】的更多相关文章
- lightoj1259 【素数预处理】
题意: 输出有多少对满足条件的(a,b) both a and b are prime; a+b=n a<=b; 思路: 一开始想的就是打表一个素数数组,然后还去二分..mdzz..直接判断一下 ...
- Codeforces 385C Bear and Prime Numbers(素数预处理)
Codeforces 385C Bear and Prime Numbers 其实不是多值得记录的一道题,通过快速打素数表,再做前缀和的预处理,使查询的复杂度变为O(1). 但是,我在统计数组中元素出 ...
- Miller-Rabin素数检测算法
遇到了一个题: Description: Goldbach's conjecture is one of the oldest and best-known unsolved problems in ...
- 【题解】CF264B Good Sequences
[题解]CF264B Good Sequences 具有很明显的无后效性. 考虑\(dp\). 考虑初始条件,显然是\(dp(0)=0\) 考虑转移,显然是\(dp(t)=max(dp[k])+1\) ...
- 《TC训练赛一》题解!
以下题目标题就是此题题目链接,题目内容为了节省篇幅就不粘上去了.整套题的链接:https://acm.bnu.edu.cn/v3/contest_show.php?cid=8679#info 密码:7 ...
- ECUST_Algorithm_2019_1
简要题意及解析 1001 求\(a+b\). 数据范围很大,用int或者long long不行.Java和python可以使用大数直接写. 高精度加法:做法就是将数据读入字符串中,数组的每一个单元存一 ...
- qbxt五一数学Day3
目录 1. 组合数取模 1. \(n,m\le 200\),\(p\) 任意 2. \(n,m\le 10^6\),\(p\ge 10^9\) 素数 3. \(n,m\le 10^6\),\(p\le ...
- UVA-10200-Prime Time-判断素数个数(打表预处理)+精度控制
题意: 给出a.b区间,判断区间内素数所占百分比 思路: 注意提前打表和控制精度1e-8的范围足够用了 细节: 精度的处理 判断素数的方法(且返回值为bool) 数据类型的强制转换 保存素数个数 提前 ...
- hdu5317 RGCDQ (质因子种数+预处理)
RGCDQ 题意:F(x)表示x的质因子的种数.给区间[L,R],求max(GCD(F(i),F(j)) (L≤i<j≤R).(2<=L < R<=1000000) 题解:可以 ...
随机推荐
- vim列块操作
一.可视模式 进入可视模式有三种方法:v,V,CTRL+V (1)按v启用可视模式,能够按单个字符选择内容,移动光标能够选择. 如: (2)按V启用可视模式,立马选中光标所在行.按单行符选择内容.移动 ...
- 高仿微信实现左滑显示删除button功能
在实际项目中删除列表中的某一项是很常见的功能.传统的做法能够使用长按监听器等,而如今流行的做法是左滑弹出删除button,微信,QQ等都是这么做的,以下做一个演示样例,代码例如以下: 主页面MainA ...
- react 中的无状态函数式组件
无状态函数式组件,顾名思义,无状态,也就是你无法使用State,也无法使用组件的生命周期方法,这就决定了函数组件都是展示性组件,接收Props,渲染DOM,而不关注其他逻辑. 其实无状态函数式组件也是 ...
- 【翻译自mos文章】怎么找到OGG Director Server使用的数据库和username?
APPLIES TO: Management Pack for Oracle GoldenGate - Version: 1.0.0.0 - Release: 1.0 Information in t ...
- PHP读取excel(6)
有时候我们只需要读取某些指定sheet,具体代码如下: <?php header("Content-Type:text/html;charset=utf-8"); //引入读 ...
- 通过/proc/cpuinfo判断CPU数量、Multicores、Multithreading、Hyper-threading
http://blog.sina.com.cn/s/blog_4a6151550100iowl.html 判断依据:1.具有相同core id的cpu是同一个core的超线程.2.具有相同physic ...
- 查看 python安装目录
打开终端 输入: which python 打开终端 依此输入: python import sys print sys.path
- Python开发【第3节】【Python分支结构与循环结构】
1.流程控制 流程: 计算机执行代码的顺序就是流程 流程控制: 对计算机代码执行顺序的管理就是流程控制 流程分类: 流程控制共分为3类: 顺序结构 分支结构/选择结构 循环结构 2.分支结构(if. ...
- java语句顺序有时非常重要
我们学习java时,通常被告知,变量定义的顺序不重要,可是下面程序确在jdk 1.7上执行出错. public class FactoryImpl implements Serializable { ...
- python day-3 基本数据类型
1. 编码 1. 最早的计算机编码是ASCII. 美国人创建的. 包含了英文字母(大写字母, 小写字母). 数字, 标点等特殊字符!@#$% 128个码位 2**7 在此基础上加了一位 2**8 8位 ...