codeforces 407C Triangle

原创 2015年11月20日 21:14:24

Description
There is a right triangle with legs of length a and b. Your task is to determine whether it is possible to locate the triangle on the plane in such a way that none of its sides is parallel to the coordinate axes. All the vertices must have integer coordinates. If there exists such a location, you have to output the appropriate coordinates of vertices.

Input
The first line contains two integers a, b (1 ≤ a, b ≤ 1000), separated by a single space.

Output
In the first line print either “YES” or “NO” (without the quotes) depending on whether the required location exists. If it does, print in the next three lines three pairs of integers — the coordinates of the triangle vertices, one pair per line. The coordinates must be integers, not exceeding 109 in their absolute value.

Sample Input
Input
1 1
Output
NO
Input
5 5
Output
YES
2 1
5 5
-2 4
Input
5 10
Output
YES
-10 4
-2 -2
1 2

题意:给出一个直角三角形的两条边长a、b,看能否将这个三角形放到一个二维平面内,使得三条边都不能平行于坐标轴,如果能输出三个点的坐标,否则输出NO

把直角顶点放在(0,0)会更好做;首先,看两个边长是不是都能成为两个整数的平方和的开根号(可能会有多个!!),然后判断以这两个边为斜边的直角三角形是不是能想似,最后就看直角三角形最后一条边是否是平行于坐标轴的。

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
    int a,b,h1[10],l1[10],h2[10],l2[10],flag1=0,flag2=0;
    cin>>a>>b;
    for(int i=1; i<1000; i++)
    {
        for(int j=i; j<1000; j++)
        {
            if(i*i+j*j==a*a)
            {
                h1[flag1]=i;
                l1[flag1]=j;
                flag1++;
            }
            if(i*i+j*j==b*b)
            {
                h2[flag2]=i;
                l2[flag2]=j;
                flag2++;
            }
        }
    }
    int t=0;
    if(flag1==0||flag2==0)
        cout<<"NO"<<endl;
    else
    {
        for(int i=0; i<flag1; i++)
        {
            for(int j=0; j<flag2; j++)
            {
                if(1.0*h1[i]/h2[j]==1.0*l1[i]/l2[j])
                {
                    if(h1[i]!=l2[j])
                    {
                        cout<<"YES"<<endl;
                        cout<<0<<" "<<0<<endl;
                        cout<<l1[i]<<" "<<h1[i]<<endl;
                        cout<<0-h2[j]<<" "<<l2[j]<<endl;
                        t=1;
                        break;
                    }
                    else if(h2[j]!=l1[i])
                    {
                        cout<<"YES"<<endl;
                        cout<<0<<" "<<0<<endl;
                        cout<<l2[j]<<" "<<h2[j]<<endl;
                        cout<<0-h1[i]<<" "<<l1[i]<<endl;
                        t=1;
                        break;
                    }
                }
            }
            if(t==1)
                break;
        }
        if(t==0)
            cout<<"NO"<<endl;
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

【codeforces 732E】【贪心 map乱搞】

传送门:http://codeforces.com/contest/732/problem/E 描述: E. Sockets time limit per t...
  • guhaiteng
  • guhaiteng
  • 2016年10月22日 15:32
  • 549

关于TRIANGLE二维三角网格生成器在windows下的配置说明

最近需要用到三角网格生成的一些东西,所以就把TRIANGLE这个库编译了一下,发现编译过程还是稍微有些纠结,于是就想到写下来,希望以后有些童鞋看到少走一些弯路。      首先非常感谢eryar的帮助...
  • shlkl99
  • shlkl99
  • 2014年06月18日 21:21
  • 1906

【LeetCode】120. Triangle 基于C++和Java的分析及解法,动态规划

120. Triangle Total Accepted: 69567 Total Submissions: 229977 Difficulty: Medium Given a triang...
  • Jin_Kwok
  • Jin_Kwok
  • 2016年05月15日 21:05
  • 1047

【LeetCode-面试算法经典-Java实现】【120-Triangle(三角形)】

【120-Triangle(三角形)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a triangle, find the minimum path sum...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月14日 06:13
  • 2376

Spark组件之GraphX学习14--TriangleCount实例和分析

更多代码请见:https://github.com/xubo245/SparkLearning 1解释 统计图中的Triangle,并返回 源码: /* * Licensed t...
  • bob601450868
  • bob601450868
  • 2016年05月04日 18:51
  • 1592

codeforces上一种应对大测试数据debug方法

接触codeforces时间不长,也就参加了10场左右。之前有次比赛就出现了wa了一道题,在比赛结束后看测试数据log时,发现出错的那组用例是个超过一万行输入的情况,codeforces上的测试数据无...
  • qq_29070399
  • qq_29070399
  • 2017年02月03日 16:09
  • 775

TriangleCount三角形计数

Graphx作为Spark的图计算组件,提供了丰富的图操作接口,以及6个常用的算法(在graphx lib中)。这里简单介绍下三角形计数TriangleCount算法原理;TriangleCount算...
  • sparksen
  • sparksen
  • 2016年09月11日 21:03
  • 2063

关于codeforces比赛规则介绍(转载)

Codeforces 简称: cf(所以谈论cf的时候经常被误会成TX的那款游戏). 网址: codeforces.com   这是一个俄国的算法竞赛网站,由来自萨拉托夫州立大学、由Mike Mirz...
  • y990041769
  • y990041769
  • 2014年02月19日 08:41
  • 15594

学习Jonathan Shewchuk的Triangle:分治法中三角形的几何信息和拓扑信息的操作

想必研究网格细分技术的同学们不会不知道Jonathan Richard Shewchuk
  • hunter_wwq
  • hunter_wwq
  • 2014年09月04日 18:50
  • 2321

python爬虫抓取codeforces分数

环境介绍 python 2.7.2 re 正则表达式库 urllib2 代码#coding:utf8 import sys import urllib2,redef getrating(name): ...
  • qscqesze
  • qscqesze
  • 2016年11月17日 22:02
  • 477
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:codeforces 407C Triangle
举报原因:
原因补充:

(最多只允许输入30个字)