• Luogu P3579 [POI2014]PAN-Solar Panels


    题目大意:

    给出T组询问,每组询问给出四个数a,b,c,d,每次询问满足a<=x<=b,c<=y<=d的gcd(x,y)的最大值

    首先可以想到如果存在gcd(x,y)=k,那么就一定要满足b/k>(a-1)/k&&d/k>(c-1)/k。

    而n/k的k取法只有√n种,直接枚举即可。

    //by zykykyk
    #include<cstdio>
    #include<ctime>
    #include<iostream>
    #include<algorithm>
    #include<cmath>
    #include<string>
    #define rg register
    #define il inline
    #define vd void
    #define ll long long
    #define For(i,x,y) for (rg int i=(x);i<=(y);i++)
    #define Dow(i,x,y) for (rg int i=(x);i>=(y);i--)
    #define cross(i,k) for (rg int i=first[k];i;i=last[i])
    using namespace std;
    il ll max(ll x,ll y){return x>y?x:y;}
    il ll min(ll x,ll y){return x<y?x:y;}
    il ll read(){
        ll x=0;int ch=getchar(),f=1;
        while (!isdigit(ch)&&(ch!='-')&&(ch!=EOF)) ch=getchar();
        if (ch=='-'){f=-1;ch=getchar();}
        while (isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
        return x*f;
    }
    int T,a,b,c,d,A,B,C,D,ans;
    int main(){
        T=read();
        while (T--){
            a=read(),b=read(),c=read(),d=read(),ans=0;
            int l=max(max(sqrt(a-1),sqrt(b)),max(sqrt(c-1),sqrt(d)));
            For(i,1,l){
                int B=b/i,A=(a-1)/i,D=d/i,C=(c-1)/i;
                if (B>A&&D>C) ans=max(ans,i);
                if (A)
                    if (b/A>(a-1)/A&&d/A>(c-1)/A) ans=max(ans,A);
                if (B)
                    if (b/B>(a-1)/B&&d/B>(c-1)/B) ans=max(ans,B);
                if (C)
                    if (b/C>(a-1)/C&&d/C>(c-1)/C) ans=max(ans,C);
                if (D)
                    if (b/D>(a-1)/D&&d/D>(c-1)/D) ans=max(ans,D);
            }
            printf("%d
    ",ans);
        }
    }
  • 相关阅读:
    MyBatis 学习笔记
    JavaEE路径陷阱之getRealPath
    Java路径问题最终解决方案—可定位所有资源的相对路径寻址
    Hibernate4.3.10通过slf4j使用log4j
    Hibernate关联关系映射
    SpringMVC 学习笔记
    Spring 学习笔记
    Hibernate 学习笔记
    Struts2 学习笔记
    vue element tree组件,根据不同的状态显示不同的字体颜色
  • 原文地址:https://www.cnblogs.com/zykykyk/p/8721568.html
Copyright © 2020-2023  润新知