zoukankan      html  css  js  c++  java
  • Codeforces Round #512 (Div. 2) D. Vasya and Triangle(几何+思维)

    题目

    题意:

      给出 n,m,k ,让你在长为 n,宽为 m 的坐标系里构建一个三角形,使得面积= n*m/k。如果存在,输出“YES”,输出三角形三个顶点的坐标;  如果不存在,输出“NO”。

    思路:

      参考其他人博客。 设长为a ,宽为b,所以要 a*b/2 = (n*m)/k ,要使有解,必须 2*n*m/k 是整数,所以只要讨论 2*n*m/k 就可。如果k=1,a<=n和b<=m范围内 一定  a*b/2 != n*m,所以 k >=2

      设g= gcd( 2*n, k ):

      如果g==1,则说明 2*n 不可能整除 k ,所以只能是2*m整除k ,这里可以得出a=n, b=2*m/k 

      如果 2<= g <= k ,则可以设 a=2*n/g(因为g>=2,所以a<=n),b=m*g/k(因为g<=k,所以b<=m),就是答案。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include <cctype>
     4 #include<algorithm>
     5 #include<cstring>
     6 #include<cmath>
     7 #include<string>
     8 #include<cmath>
     9 #include<set>
    10 #include<vector>
    11 #include<stack>
    12 #include<queue>
    13 #include<map>
    14 using namespace std;
    15 #define ll long long
    16 #define mem(a,x) memset(a,x,sizeof(a))
    17 #define se second
    18 #define fi first
    19 const ll mod=1e9+7;
    20 const int INF= 0x3f3f3f3f;
    21 const int N=3e5+5;
    22 
    23 ll n,k,m;
    24 
    25 ll gcd(ll x,ll y)
    26 {
    27     return y==0?x:gcd(y,x%y);
    28 }
    29 int main()
    30 {
    31     cin>>n>>m>>k;
    32     if( (2*m*n) %k!=0 || k<2)
    33     {
    34         cout<<"NO"<<endl;
    35         return 0;
    36     }
    37     cout<<"YES"<<endl;
    38     cout<<0<<' '<<0<<endl;
    39     
    40     ll a,b,g;
    41     g=gcd(2*n,k);
    42     if(g==1)
    43     {
    44         a=n; b=2*m/k;
    45     }
    46     else
    47     {
    48         a=2*n/g; b=m*g/k;  
    49     }
    50     cout<<a<<' '<<0<<endl;
    51     cout<<0<<' '<<b<<endl;
    52 }
    View Code
  • 相关阅读:
    Luncene介绍
    多线程&定时器Timer&同步&线程通信&ThreadLocal
    JVM垃圾收集器&对象的引用回收
    JVM介绍&自动内存管理机制
    JS原生Ajax&Jquery的Ajax技术&Json
    Jedis/JedisPool和Redis数据类型与特性
    NoSQL&Redis
    maven中的jar包未下载完全如何解决?
    如何在IntelliJ IDEA中配置Maven
    pip安装超时怎么办?
  • 原文地址:https://www.cnblogs.com/thunder-110/p/10121082.html
Copyright © 2011-2022 走看看