您的位置:首页 > 大数据 > 人工智能

2015 Multi-University Training Contest 3 RGCDQ

2015-07-29 13:50 477 查看
<p> 传送带  :http://www.bnuoj.com/v3/problem_show.php?pid=49477</p><p>由于数据小,可以知道最多只能为7个,使用前缀和(线段树太复杂。。。)</p><p>f[]记录其质约数个数,num[i][j]记录i之前j个的个数</p>#include<cstdio>
#include<cmath>
using namespace std;

const int Max=1000005;
int f[Max],num[Max][8];

int main()
{
int t,l,r;
for(int i=2;i<Max;i++){//预处理
if(f[i]==0)
for(int j=i;j<Max;j+=i){
f[j]++;
}
}
for(int i=2;i<Max;i++){
for(int j=1;j<8;j++){
num[i][j]+=num[i-1][j];
}
num[i][f[i]]++;
}
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&l,&r);
int tt[8];
int ans=1;
for(int i=1;i<8;i++)
{
tt[i]=num[r][i]-num[l-1][i];
}
if(tt[2]>1||(tt[2]+tt[6])>1) ans=2;
if(tt[3]>1||(tt[3]+tt[6]>1)) ans=3;
if(tt[4]>1) ans=4;
if(tt[5]>1) ans=5;
if(tt[6]>1) ans=6;
if(tt[7]>1) ans=7;
printf("%d\n",ans);
}
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: