2015 Multi-University Training Contest 3 1002RGCDQ(hdu5317)

来源:互联网 发布:营销之道软件 编辑:程序博客网 时间:2024/05/16 08:49
#include<stdio.h>#include<iostream>#include<string.h>#include<stdlib.h>#include<vector>#include<algorithm>#include<math.h>#include<string>#include<set>#include<queue>#include<map>using namespace std;  #define INF 0x7fffffff//vector<int> f;int f[100000];int countt;bool num[1000010];int sf[1000010];//i这个数有几种素数因子int jz[1000010][10];//i这个数有j种素数因子的个数void init(){    countt=0;    memset(num,false,sizeof(num));    memset(sf,0,sizeof(sf));    memset(jz,0,sizeof(jz));    for(int i=2;i<=1000000;++i){            if(num[i]==false){                sf[i]=1;        for(int j=2;i*j<=1000000;++j){            num[j*i]=true;            sf[j*i]++;        }            }    }        jz[1][1]=1;    for(int i=2;i<=1000000;++i){            for(int j=1;j<=9;++j)                jz[i][j]=jz[i-1][j];            jz[i][sf[i]]++;    }}int main(){      //freopen("G://test.txt","r",stdin);    int t,n,m;    init();    scanf("%d",&t);    while(t--){    int l,r;    scanf("%d%d",&l,&r);    int haha[10];        for(int i=1;i<=9;++i){            haha[i]=jz[r][i]-jz[l][i];        }        haha[sf[l]]++;        int maxn=1;        for(int i=9;i>=1;--i){            if(haha[i]>=2){                if(i>maxn)                maxn=i;            }        }        if(maxn<2)            if(haha[4]>=1&&haha[2]>=1)                maxn=2;        printf("%d\n",maxn);    }    return 0;  }   

0 0