题解:P12631 [NAC 2025] Solar Farm
shinzAnmono · · 题解
先判掉无解(
如果横放
#include<iostream>
#include<algorithm>
using ll=long long;
ll sqrt(ll x){
ll p=__builtin_sqrtl(x);
while(p*p<=x)p++;
while(p*p>x)p--;
return p;
}
int main(){
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int t;
std::cin>>t;
while(t--){
ll rad,w,h;
std::cin>>rad>>w>>h;
if(w*w+h*h>4*rad*rad){
std::cout<<"0\n";
continue;
}
if(w<h)std::swap(w,h);
auto ff=[&](ll x){return sqrt(4*rad*rad-w*w*x*x)/h*x;};
ll l=sqrt(2*rad*rad/w/w),ans=0,B=10000;
for(ll i=std::max(1ll,l-B);i<=std::min(2*rad/w,l+B);i++)ans=std::max(ans,ff(i));
std::cout<<ans<<"\n";
}
return 0;
}