题面

传送门

分析

引理1:三角形的面积\(\times 2\)一定是整数

由坐标系中的三角形面积公式

\[S=\frac{1}{2}(x_1y_2+x_2y_3+x_3y_1-x_1y_3-x_2y_1-x_3y_2)
\]

显然得证

故若\(\frac{2nm}{k}\)是整数,则有解,否则无解

引理2:一定能构造出一个直角边平行于坐标轴的直角三角形,使它的面积为\(\frac{nm}{k}\)

设直角三角形两直角边为\(a,b\),则\(ab=\frac{2nm}{k} \leq nm\)

由引理1,\(\frac{2nm}{k}\)为正整数,显然一定可以拆分成两正整数之积,所以一定可以找到一对正整数\((a,b)\)满足条件

根据引理1,我们来证明:

对于给定的任意正整数\(n,m,k(k \geq 2)\),一定存在一个直角三角形的两直角边长为正整数\(a,b\),且\(a,b\)满足条件$$ab=\frac{2nm}{k}$$

那么,如何构造\(a\leq n,b\leq m\)的情况呢

显然\(2n\)或\(2m\)中的至少一个数与\(k\)不互质,否则\(\frac{2nm}{k}\)不可能为正整数

(1)

若\(gcd(2n,k) \neq 1\),则

\[a=\frac{2n}{gcd(2n,k)},b=\frac{2nm}{ak}
\]

 由于$2 \leq gcd(2n,k) \leq k$
则$a \leq n$
$$ b=\frac{2nm}{ak} =\frac{2nm}{\frac{2kn}{gcd(2n,k)}}=\frac{m \times gcd(2n,k)}{k} \leq \frac{mk}{k}=m $$
故$b\leq m$

(2)

若\(gcd(2n,k) = 1\),则\(a=n,b=\frac{2m}{k}\)

由于\(k \geq 2\),显然得\(b \leq m\)

综上所述,对于给定的任意正整数\(n,m,k(k \geq 2)\),一定存在一个直角三角形的两直角边长为正整数\(a,b\),且\(a,b\)满足条件\(ab=\frac{2nm}{k}\)

代码

#include<iostream>
#include<cstdio>
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);
}
}

Codeforces 1058C(思维+最大公因数)的更多相关文章

  1. Codeforces 424A (思维题)

    Squats Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submit Statu ...

  2. Codeforces 1060E(思维+贡献法)

    https://codeforces.com/contest/1060/problem/E 题意 给一颗树,在原始的图中假如两个点连向同一个点,这两个点之间就可以连一条边,定义两点之间的长度为两点之间 ...

  3. Queue CodeForces - 353D (思维dp)

    https://codeforces.com/problemset/problem/353/D 大意:给定字符串, 每一秒, 若F在M的右侧, 则交换M与F, 求多少秒后F全在M左侧 $dp[i]$为 ...

  4. codeforces 1244C (思维 or 扩展欧几里得)

    (点击此处查看原题) 题意分析 已知 n , p , w, d ,求x , y, z的值 ,他们的关系为: x + y + z = n x * w + y * d = p 思维法 当 y < w ...

  5. CodeForces - 417B (思维题)

    Crash Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submit Status ...

  6. CodeForces - 417A(思维题)

    Elimination Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submit  ...

  7. CodeForces 625A 思维

    题意是说一个人喝酒 有两种办法 买塑料瓶的 a块钱 喝了就没了 或者是买玻璃瓶的b块钱 喝完还能卖了瓶子c块钱 求最多能喝多少瓶 在开始判断一次 a与b-c的关系 即两种方式喝酒的成本 如果a< ...

  8. Vladik and Complicated Book CodeForces - 811B (思维实现)

    Vladik had started reading a complicated book about algorithms containing n pages. To improve unders ...

  9. The Contest CodeForces - 813A (思维)

    Pasha is participating in a contest on one well-known website. This time he wants to win the contest ...

随机推荐

  1. DevExpress v19.1新版亮点——WinForms篇(一)

    行业领先的.NET界面控件DevExpress v19.1终于正式发布,本站将以连载的形式介绍各版本新增内容.在本系列文章中将为大家介绍DevExpress WinForms v19.1中新增的一些控 ...

  2. osi7层模型及线程和进程

    端口的作用: 在同一台电脑上,为了让不同 的程序分离开来! http:网站默认端口是80 https:网站默认端口是443 osi七层模型: 1.应用层:软件 2.表示层:接收数据 3.会话:保持登录 ...

  3. 【牛客Wannafly挑战赛23】F 计数

    题目链接 题意 给定一张边带权的无向图,求生成树的权值和是 k 的倍数的生成树个数模 p 的值. \(n\leq 100,k\leq 100,p\mod k=1\) Sol 看见整除然后 \(p\mo ...

  4. C++的命令行参数(gflag)

    参考:https://www.cnblogs.com/myyan/p/4699940.html 这是一款google开源的命令行参数解析工具,支持从环境变量.配置文件读取参数(可以用gflags代替配 ...

  5. linux运维、架构之路-MHA高可用方案

    一.软件介绍          MHA(master high   availability)目前是MySQL高可用方面是一个相对成熟的解决方案.在切换过程中,mha能做到0-30s内自动完成数据库的 ...

  6. React Native 之FlatList 下拉刷新和上拉加载更多

    接上一篇代码: 只修改了FlatListDemo.js里面的代码 import React, {Fragment,Component} from 'react'; import { SafeAreaV ...

  7. [ZJU 1003] Crashing Balloon

    ZOJ Problem Set - 1003 Crashing Balloon Time Limit: 2 Seconds      Memory Limit: 65536 KB On every J ...

  8. 一些性能优化的tips

    工作中积累的一些性能优化的tips,记录一下: 1. Message的创建 Message message = Message.obtain();  // 推荐 Message message = n ...

  9. 清北学堂算法&&数据结构DAY1——知识整理

    简述: 今天主要讲分治(主要是二分).倍增.贪心.搜索,还乱入了爬山算法和模拟退火(汗...) 一.分(er)治(fen): 二分是个在OI中广泛运用的思想,随便举些例子,就足以发现二分的运用的广泛性 ...

  10. linux 挂载磁盘指令

    fdisk -l    (先df -h,如果没有xvdb盘信息,则敲这条指令) fdisk /dev/xvdb (进入对话状态,一问一答,结束后要保存w或者删除q) mkfs.ext3 /dev/xv ...