你省(福建)省队集训 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; ```