这篇文章上次修改于 366 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
这道题可能让很多人初一白学了。
知道 $p_i\times q_i$。
$e_i \times d_i = (p_i - 1)(q_i - 1) + 1$
稍微变形一下 $e_i \times d_i = p_i\times q_i - p_i -q_i + 2$
带入得 $e_i \times d_i = n_i -p_i -q_i+2$
整理得 $p_i + q_i=2+n_i-e_i \times d_i$
知道 $p_i$ 和 $q_i$ 之和,之积,所以$(p_i-q_i)^2 = (p_i+q_i)^2-4\times p_i\times q_i$
开平方记得判正负。
#include <iostream>
#include <cmath>
#include <cstdio>
#define int long long
using namespace std;
signed main(){
int k;
scanf("%lld",&k);
while(k--){
int n,d,e;
scanf("%lld%lld%lld",&n,&d,&e);
int sum=(2+n-e*d);
if(sum*sum-4*n<0){
printf("NO\n");
continue;
}
int cha=sqrt(sum*sum-4*n);
int p=(cha+sum)/2;
int q=sum-p;
if(p>q){
swap(p,q);
}
if(p*q==n&&(p-1)*(q-1)+1==e*d){
printf("%lld %lld\n",p,q);
}else{
printf("NO\n");
}
}
return 0;
}
欢迎到博客看其他题解。