hdu 5317 多校第三场

开始题意读错了   shit    wa了好久    仔细一看真是水题一枚;

根据素数打表很容易得出每个数的F()值     从而可以看出1到1000000  F()的值最大为7  及(2*3*5*7*11*13*17)   告诉你区间    只需要在这个区间里找到这7个数分辨出先了多少次  这里用一个二维的数组leap【i】【j】(j小于等于7) 表示i之前j出现的次数    这样就很容易求出区间j的值    纪录在record数组里    就可以求GCD了  这里 我是直接把所有情况列出来了!!!

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;

#define LL(x) (x<<1)
#define RR(x) ((x<<1)|1)

int cont[1000100]={0},mark[1000010]={0},leap[1000010][8]={0};
int max(int a,int b)
{
    return a>b?a:b;
}
int main()
{
    int i,j;
    memset(mark,0,sizeof(mark));
    memset(cont,0,sizeof(cont));
    for(i=2;i<=1000000;i++)
    {
        if(mark[i]) continue;
        cont[i]=1;
        for(j=i+i;j<=1000000;j+=i)
        {
            cont[j]++;
            mark[j]=1;
        }
    }
    for(i=2;i<=1000000;i++)
    {
        for(j=1;j<=7;j++)
        {
            leap[i][j]=leap[i-1][j];
        }
        leap[i][cont[i]]++;
    }

    int T,L,R;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&L,&R);
        int record[8];
        memset(record,0,sizeof(record));
        for(i=1;i<=7;i++)
        {
            record[i]=leap[R][i]-leap[L-1][i];
        }
        int ans=1;
        for(i=1;i<=7;i++)
        {
            if(record[i]==0) continue;
            if(record[i]>1) ans=max(ans,i);
            for(j=i+1;j<=7;j++)
            {
                if(record[j]==0) continue;
                else if(i==2&&j==4)
                {
                    if(ans<2) ans=2;
                }
                else if(i==2&&j==6)
                {
                    if(ans<2) ans=2;
                }
                else if(i==4&&j==6)
                {
                    if(ans<2) ans=2;
                }
                else if(i==3&&j==6)
                {
                    if(ans<3) ans=3;
                }
            }
        }
        printf("%d\n",ans);
    }
    return 0;
} 

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 02:36:01

hdu 5317 多校第三场的相关文章

2014多校第三场1005 || HDU 4891 The Great Pan(模拟)

题目链接 题意 : 给你n行字符串,问你有多少种理解方式.有两大类的理解 (1){A|B|C|D|...}代表着理解方式可以是A,可以是B或C或者D. (2)$blah blah$,在$$这两个符号中间,如果是不连续的空格的那个位置就有2种理解方式,可以理解为没有空格也可以理解为有空格.如果有连续N个空格的位置,那里就有N+1种理解方式. 最后所有的理解方式相乘,数据保证$一定与$匹配,{一定与匹配},不会有任何嵌套,类似{$$}或者{{}}或者${}$这种情况都不会出现,也不会有{$}这种情况

2018 HDU多校第三场赛后补题

2018 HDU多校第三场赛后补题 从易到难来写吧,其中题意有些直接摘了Claris的,数据范围是就不标了. 如果需要可以去hdu题库里找.题号是6319 - 6331. L. Visual Cube 题意: 在画布上画一个三维立方体. 题解: 模拟即可. 代码: #include <bits/stdc++.h> using namespace std; int a, b, c, R, C; char g[505][505]; int main () { int T; cin >>

hdu-4893-Wow! Such Sequence!-线段树【2014多校第三场-J】

题意:一个初始为0的数组,支持三种操作:1.向第k个数添加d,(|d| < 2^31);2.把[l, r]区间内的数字都换成与它最相近的Fibonacci数;3.询问[l, r]区间的和. 思路:初始化Fibonacci数组,longlong 类型内90个就够用了. 线段树区间查询,用lazy标记, sgt[]记录线段树各个节点的区间和, fib_num_sum[]记录与各个叶子节点当前值最接近的Fibonacci数,传递到区间fib_num_sum[]就是区间Fibonacci数的和. 操作1

2019湖南多校第三场

解题过程 开场lfw过A,然后byf突然想到E的构造方法,WA了一发开始查错,shl中途看G,说"这不是bzoj原题吗?"拿到一血带歪榜,然后byf该出E拿到一血又带歪榜...shl写出B,之后lfw C想复杂调不出,shl WA一发C过掉 ,byf发现F题是几何题,想起了寒假刚几何起步的lfw,byf开始带着lfw想防AK题.K题shl先贪心再二分做了很久最后过掉,K题lfw想网络流,然后失败了,最后byf想出费用流,好像可以,但是shl过掉了. 赛后发现G题真的是BZOJ原题,而且

hdu 5317 RGCDQ (2015多校第三场第2题)素数打表+前缀和相减求后缀(DP)

题目链接: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)的情况就可以知道结果. 代码: 1 #include <stdio.h

HDU 5754 Life Winner Bo 2016多校第三场1003

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5754 题意:给你一个n*m大小的棋盘,分别以国际象棋的国王.战车.骑士和皇后的走法从(1,1)走到(n,m),而且只能向右或者向下走,问谁有必胜的策略或者是两者平局. 题解:无论是哪一种移动,都可以注意到,如果从起点到某一个点有必胜的策略,那么再以必胜点作为起点可以走到下一个必胜点,也就是以小见大. 一.对于王的走法,可以注意到3*3大小的棋盘,从(1,1)到(3,3)后手是有必胜的策略的,对于N和

hdu 5316 Magician(2015多校第三场第1题)线段树单点更新+区间合并

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5316 题意:给你n个点,m个操作,每次操作有3个整数t,a,b,t表示操作类型,当t=1时讲a点的值改成b:当t=0时,查询区间a,b之间最大的子序列和,这个子序列中的相邻的元素的原来的下标奇偶性都不同. 思路:这道题难点就在查询,其余都是模板,而根据查询,你只要分别把下一个区间的奇偶最大的情况分别比较,合并到上一个区间这样可以构建一个每个节点存有区间中奇开头偶开头,奇结尾,偶结尾这些区间情况的树.

HDU 5316 Magician(2015多校第三场 线段树)

Magician Time Limit: 18000/9000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1700    Accepted Submission(s): 503 Problem Description Fantasy magicians usually gain their ability through one of three usual methods

hdu多校第三场 1006 (hdu6608) Fansblog Miller-Rabin素性检测

题意: 给你一个1e9-1e14的质数P,让你找出这个质数的前一个质数Q,然后计算Q!mod P 题解: 1e9的数据范围pass掉一切素数筛法,考虑Miller-Rabin算法. 米勒拉宾算法是一种判断素数的随机化算法,由于其随机性,它不能保证总是正确的,但其对于一个素数,总会返回素数的结果,对于一个合数,才有极小概率返回素数的结果(假阳性). 米勒拉宾算法对于单个素数的判断时间复杂度为$O(log^3n)$.(因为1e14相乘会爆longlong,模乘要写成龟速乘,因此要多一个log) 18