传送门
引理1:三角形的面积 × 2 \times 2 ×2一定是整数
由坐标系中的三角形面积公式
S = 1 2 ( x 1 y 2 + x 2 y 3 + x 3 y 1 − x 1 y 3 − x 2 y 1 − x 3 y 2 ) S=\frac{1}{2}(x_1y_2+x_2y_3+x_3y_1-x_1y_3-x_2y_1-x_3y_2) S=21(x1y2+x2y3+x3y1−x1y3−x2y1−x3y2)
显然得证
故若 2 n m k \frac{2nm}{k} k2nm是整数,则有解,否则无解
引理2:一定能构造出一个直角边平行于坐标轴的直角三角形,使它的面积为 n m k \frac{nm}{k} knm
设直角三角形两直角边为 a , b a,b a,b,则 a b = 2 n m k ≤ n m ab=\frac{2nm}{k} \leq nm ab=k2nm≤nm
由引理1, 2 n m k \frac{2nm}{k} k2nm为正整数,显然一定可以拆分成两正整数之积,所以一定可以找到一对正整数 ( a , b ) (a,b) (a,b)满足条件
根据引理1,我们来证明:
对于给定的任意正整数 n , m , k ( k ≥ 2 ) n,m,k(k \geq 2) n,m,k(k≥2),一定存在一个直角三角形的两直角边长为正整数 a , b a,b a,b,且 a , b a,b a,b满足条件 a b = 2 n m k ab=\frac{2nm}{k} ab=k2nm
那么,如何构造 a ≤ n , b ≤ m a\leq n,b\leq m a≤n,b≤m的情况呢
显然 2 n 2n 2n或 2 m 2m 2m中的至少一个数与 k k k不互质,否则 2 n m k \frac{2nm}{k} k2nm不可能为正整数
(1)
若 g c d ( 2 n , k ) ≠ 1 gcd(2n,k) \neq 1 gcd(2n,k)̸=1,则
a = 2 n g c d ( 2 n , k ) , b = 2 n m a k a=\frac{2n}{gcd(2n,k)},b=\frac{2nm}{ak} a=gcd(2n,k)2n,b=ak2nm
由于 2 ≤ g c d ( 2 n , k ) ≤ k 2 \leq gcd(2n,k) \leq k 2≤gcd(2n,k)≤k
则 a ≤ n a \leq n a≤n
b = 2 n m a k = 2 n m 2 k n g c d ( 2 n , k ) = m × g c d ( 2 n , k ) k ≤ m k k = m b=\frac{2nm}{ak} =\frac{2nm}{\frac{2kn}{gcd(2n,k)}}=\frac{m \times gcd(2n,k)}{k} \leq \frac{mk}{k}=m b=ak2nm=gcd(2n,k)2kn2nm=km×gcd(2n,k)≤kmk=m
故 b ≤ m b\leq m b≤m
(2)
若 g c d ( 2 n , k ) = 1 gcd(2n,k) = 1 gcd(2n,k)=1,则 a = n , b = 2 m k a=n,b=\frac{2m}{k} a=n,b=k2m
由于 k ≥ 2 k \geq 2 k≥2,显然得 b ≤ m b \leq m b≤m
综上所述,对于给定的任意正整数 n , m , k ( k ≥ 2 ) n,m,k(k \geq 2) n,m,k(k≥2),一定存在一个直角三角形的两直角边长为正整数 a , b a,b a,b,且 a , b a,b a,b满足条件 a b = 2 n m k ab=\frac{2nm}{k} ab=k2nm
#include
#include
using namespace std;
inline long long gcd(long long a,long long b){
return b==0?a:gcd(b,a%b);
}
long long n,m,k;
int main(){
cin>>n>>m>>k;
if((n*m*2)%k!=0){
printf("NO\n");
}else{
printf("YES\n");
long long S=(n*m*2)/k;
long long a,b;
if(gcd(n*2,k)!=1){
a=n*2/gcd(n*2,k);
b=S/a;
}else{
a=n;
b=m*2/k;
}
printf("0 0\n");
printf("%I64d 0\n",a);
printf("%I64d %I64d\n",a,b);
}
}