你省(福建)省队集训 Day5 T3 乱搞分析
发布时间 2023-07-12 19:43:24作者: HaHeHyt
简要题意
有 \(1\le T\le 10^6\) 次询问,每次询问正整数 \(n\),问是否存在三个正整数 \(a,b,c\),满足 \(ab+bc+ca=n\)。有的话给出构造,否则输出 \(-1\) 。
solution
首先我们有打表
```cpp
namespace DB
{
const int N=1e5;
struct node{int x,y,z;}db[N+5];
inline void init()
{
for(int i=1;i<=N;i++)
{
bool ok=1;
for(int a=1;a*a<=i;a++)
{
for(int b=1;b*b<=i;b++)
{
int t=i-a*b;if(t<=0) continue;
if(t%(a+b)==0){db[i]={a,b,t/(a+b)};ok=0;break;}
}
if(!ok) break;
}
}
}
}using DB::db;
```