Luogu P3579 [POI2014]PAN-Solar Panels
2024-08-25 06:12:11
题目大意:
给出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=;int ch=getchar(),f=;
while (!isdigit(ch)&&(ch!='-')&&(ch!=EOF)) ch=getchar();
if (ch=='-'){f=-;ch=getchar();}
while (isdigit(ch)){x=(x<<)+(x<<)+ch-'';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=;
int l=max(max(sqrt(a-),sqrt(b)),max(sqrt(c-),sqrt(d)));
For(i,,l){
int B=b/i,A=(a-)/i,D=d/i,C=(c-)/i;
if (B>A&&D>C) ans=max(ans,i);
if (A)
if (b/A>(a-)/A&&d/A>(c-)/A) ans=max(ans,A);
if (B)
if (b/B>(a-)/B&&d/B>(c-)/B) ans=max(ans,B);
if (C)
if (b/C>(a-)/C&&d/C>(c-)/C) ans=max(ans,C);
if (D)
if (b/D>(a-)/D&&d/D>(c-)/D) ans=max(ans,D);
}
printf("%d\n",ans);
}
}
最新文章
- 关于CDN下查找网站真实ip
- Java 中常用缓存Cache机制的实现
- 一、Docker之旅
- OWIN的理解和实践(一) – 解耦,协作和开放
- php中的邮件技术
- 30天,O2O速成攻略【7.25北京站】
- SSH基础(2)
- Codeforces Round #328 (Div. 2) D. Super M
- Java知识总结--三大框架
- 数据库(MSSQLServer,Oracle,DB2,MySql)常见语句以及问题(续1之拼接字符串)
- Combination Sum III —— LeetCode
- Spring 为Bean对象执行初始化和销毁方法
- .30-浅析webpack源码之doResolve事件流(1)
- 推荐几个牛逼的 IDEA 插件,还带动图!
- iOS12 XCode10更新
- web API简介(四):客户端储存之IndexedDB API
- JAVA多态计算面积main函数调用方法
- linux中断申请之request_threaded_irq【转】
- 百度编辑器插入视频、iframe 失败
- Android英文文档翻译系列(6)——LocalBroadcastManager