hdu6287 口算训练(数学+二分)(2018女生赛

/*
    hdu6287 口算训练(数学+二分) by zhuhua
    题意:数量级都是e5,查询a[l]*...*a[r]%d==0 ? puts("Yes"):puts("No");
    思路:将每个数组质因数分解,在质因数中保存出现过的下标,二分求解。
    用素数打个表就t掉了啦。只能这样每次分解==
*/
#include 
using namespace std;
const int nmax=100010;
int tot=0,prime[nmax],notprime[nmax];
/*void getprime(){
    int i,j;
    for(i=2;i appear[nmax];


int main(){
    int a,n,m,t,l,r,d;
    int i,j,cnt;
//    getprime();
    scanf("%d",&t);
    while(t--){
        scanf("%d%d",&n,&m);
        for(i=2;i1)appear[a].push_back(i);
        }
        for(i=0;i1){
                int has=upper_bound(appear[d].begin(),appear[d].end(),r)-lower_bound(appear[d].begin(),appear[d].end(),l);
                if(has<1)flag=false;
            }
            if(flag)puts("Yes");
            else puts("No");
        }
    }
    return 0;
}

你可能感兴趣的:(hdu6287 口算训练(数学+二分)(2018女生赛)