/ Randle /

记录详情

System Error


  
KeyError('config.ini',)

代码

#include<cstdio>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
int prime[100001],n,size;
bool notprime[100001];
ll ans,a1,b1,a0,b0,numa0,numb0,numa1,numb1,la,ra,lb,rb,l,r;
void init(){
    notprime[1]=true;
    for(int i=2;i<=50000;i++){
        if(!notprime[i])
            prime[++size]=i;
        for(int j=1,k;j<=size;j++){
            k=i*prime[j];
            if(k>50000)break;
            notprime[k]=true;
            if(i%prime[j]==0)break;
        }
    }
}
int main(){
    init();
    scanf("%d",&n);
    while(n--){
        ans=1;bool ok=true;
        scanf("%lld%lld%lld%lld",&a0,&a1,&b0,&b1);
        if(a1>a0||b1<b0){
            printf("0\n");
            continue;
        }
        for(int i=1;i<=size;i++){
            if(a0==1&&a1==1&&b0==1&&b1==1)break;
            numa0=numb0=numa1=numb1=0;la=lb=l=0,ra=rb=r=1000000;
            while(a0%prime[i]==0){a0/=prime[i];numa0++;}
            while(b0%prime[i]==0){b0/=prime[i];numb0++;}
            while(a1%prime[i]==0){a1/=prime[i];numa1++;}
            while(b1%prime[i]==0){b1/=prime[i];numb1++;}
            if(numa0<numa1||numb0>numb1){ ok=false;break; }
            la=numa1; rb=numb1;
            if(numa0>numa1) ra=numa1;
            if(numb0<numb1) lb=numb1;
            l=max(la,lb);r=min(ra,rb);
            if(r<l){ ok=false;break;}
            ans=(ll)ans*(r-l+1);
        }
        if(!(a0==1&&a1==1&&b0==1&&b1==1)){
            la=lb=l=0,ra=rb=r=1000000;
            if(a1>a0||b1<b0)ok=false;
            if(a1==a0&&a1!=1) ans<<=1;
            if(b1==b0&&b1!=1) ans<<=1;
        }
        if(!ok) ans=0;
        printf("%lld\n",ans);    
    } 
    return 0;
}

信息

递交者
类型
递交
题目
改编小学数学题(第一个AC奖励5元)
题目数据
下载
语言
C++
递交时间
2017-10-13 14:12:39
评测时间
2017-10-13 14:12:39
评测机
分数
0
总耗时
0ms
峰值内存
0 Bytes