codechef Chef and The Right Triangles 题解
2014-07-12 17:20
417 查看
Chef and The Right Triangles
The Chef is given a list of N triangles. Each triangle is identfied by the coordinates of its three corners in the 2-D cartesian plane. His job is to figure out how manyof the given triangles are right triangles. A right triangle is a triangle in which one angle is a 90 degree angle. The vertices
of the triangles have integer coordinates and all the triangles given are valid( three points aren't colinear ).
Input
The first line of the input contains an integer N denoting the number of triangles. Each of the following Nlines contain six space separated integers x1 y1 x2 y2 x3 y3 where (x1, y1),
(x2, y2) and (x3, y3) are the vertices of a triangle.
Output
Output one integer, the number of right triangles among the given triangles.
Constraints
1 ≤ N ≤ 100000 (105)0 ≤ x1, y1, x2, y2, x3, y3 ≤ 20
Example
Input: 5 0 5 19 5 0 0 17 19 12 16 19 0 5 14 6 13 8 7 0 4 0 14 3 14 0 2 0 14 9 2 Output: 3
推断是否是直角三角形,两种方法:
1 a*a + b*b = c*c
2 A dot B == 0 //dot是向量的点乘
重载操作符:
1 定义一个Point
2 定义Point的操作: 1) 减法 2) *乘号代表dot运算
#pragma once #include <stdio.h> class ChefandTheRightTriangles { struct Point { int x, y; explicit Point(int a = 0, int b = 0): x(a), y(b) {} Point operator-(const Point &p) const { return Point(x - p.x, y - p.y); } int operator*(const Point &p) const { return x * p.x + y * p.y; } }; int getInt() { char c = getchar(); while (c < '0' || '9' < c) { c = getchar(); } int num = 0; while ('0' <= c && c <= '9') { num = (num<<3) + (num<<1) + (c - '0'); c = getchar(); } return num; } public: ChefandTheRightTriangles() { int N = 0, C = 0; N = getInt(); Point p1, p2, p3, v1, v2, v3; while (N--) { p1.x = getInt(), p1.y = getInt(); p2.x = getInt(), p2.y = getInt(); p3.x = getInt(), p3.y = getInt(); v1 = p1 - p2, v2 = p2 - p3, v3 = p3 - p1; if (v1 * v2 == 0 || v2 * v3 == 0 || v3 * v1 == 0) C++; } printf("%d", C); } }; int chefandTheRightTriangles() { ChefandTheRightTriangles(); return 0; }
相关文章推荐
- codechef Chef and The Right Triangles 题解
- codechef The Ball And Cups题解
- Codechef Wonder Woman and the Dark man
- CodeChef November Lunchtime 2013 Lucy and the Number Game(简单题)
- codechef Polo the Penguin and the Tree
- codechef The Ball And Cups题解
- codechef Johnny and the Beanstalk 题解
- ABAP code to find all the User Exits and BADIs for any transaction
- Nullsoft Winamp Plug-in With Bitmapped UI, Docking and Restrictive Resizing - The Code Project - Dialog and Windows
- Unpacking Storm Worm : Code and Import Address Table onto the heap
- Safe! Repel Attacks on Your Code with the Visual Studio 2005 Safe C and C++ Libraries
- How sign the code by own certificate and install the certificate on device.
- Tracing and Stepping through the Source Code
- Exit ShotCode? Starbucks and Apple to the rescue!
- 面试题:What will happen when you attempt to compile and run the following code
- 非递归交换二叉树左右子树:BinaryTree:Exchange the left child and the right child without recursive method
- How sign the code by own certificate and install the certificate on device.
- Algorithmic Complexity Attacks and the Linux Networking Code
- OpenOffice.org Code Snippets--Get and modify the current selection in calc (in C++)
- How to know the corresponding relation between T-code and Program