zoukankan      html  css  js  c++  java
  • 【洛谷】P1072 Hankson 的趣味题 (题解)

    P1072 Hankson 的趣味题


    题解: 

    效果
    提交效果图,亲试
    #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
    ");
    			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
    ",ans);
    	}
    	return 0;
    }
  • 相关阅读:
    亚马逊云IoT平台接入开发记录
    pip下载速度慢更换清华源试试
    gitlab回归上一次提交
    uos桌面壁纸存放路径
    python中json中的dump和dumps
    Python中的类中__dict__方法
    C++ | 数组反转的三种方法
    《C++Primer Plus》 | 复合类型
    pwn 中的函数 | 持续更新
    七月安恒DASCTF | 复现
  • 原文地址:https://www.cnblogs.com/BorisDimitri/p/13546630.html
Copyright © 2011-2022 走看看