WUST Online Judge - 2161: 特殊的三角形
阿新 • • 發佈:2018-06-12
mage class int idt links HP right .cn b-
2161: 特殊的三角形
Time Limit: 1 Sec Memory Limit: 128 MB 64bit IO Format: %lld
Submitted: 513 Accepted: 100
[Submit][Status][Web Board]
Description
假如給你三個頂點的坐標,保證這三個頂點一定可以構成三角形,問是否能構成直角三角形?可以的話輸出"RIGHT"。好像問題太簡單了,為了增加難度,假如我們可以將任意一個頂點的橫坐標或者縱坐標加1或者減1(註意我們只能進行一次操作,改變一個頂點的橫坐標或者縱坐標),使得可以構成直角三角形的話,輸出"ALMOST"。其他情況輸出"NEITHER"。
題目輸入保證坐標都是整數。
Input
多組輸入
輸入三個坐標,x1,y1,x2,y2,x3,y3,保證都是整數並在int範圍內。
Output
輸出結果。
Sample Input
0 0 2 0 0 1 2 3 4 5 6 6
Sample Output
RIGHT NEITHER
Author
CYL
代碼如下:
#include <stdio.h> int f(int a, int b, int c, int d, int e, int f) { if (((c-a)*(c-a)+(d-b)*(d-b))+((e-a)*(e-a)+(f-b)*(f-b))==((e-c)*(e-c)+(f-d)*(f-d))) return 1; else if (((e-a)*(e-a)+(f-b)*(f-b))+((e-c)*(e-c)+(f-d)*(f-d))==((c-a)*(c-a)+(d-b)*(d-b))) return 1; else if (((e-c)*(e-c)+(f-d)*(f-d))+((c-a)*(c-a)+(d-b)*(d-b))==((e-a)*(e-a)+(f-b)*(f-b))) return 1; else return 0; } int main(void) { int x1, x2, x3, y1, y2, y3, flag, temp; while (scanf("%d%d%d%d%d%d", &x1, &y1, &x2, &y2, &x3, &y3) != EOF) { flag = 1; temp = 1; if (f(x1, y1, x2, y2, x3, y3)) { printf("RIGHT\n"); temp = 0; } else if (temp && flag && (f(x1 - 1, y1, x2, y2, x3, y3) || f(x1 + 1, y1, x2, y2, x3, y3))) flag = 0; else if (temp && flag && (f(x1, y1 - 1, x2, y2, x3, y3) || f(x1, y1 + 1, x2, y2, x3, y3))) flag = 0; else if (temp && flag && (f(x1, y1, x2 - 1, y2, x3, y3) || f(x1, y1, x2 + 1, y2, x3, y3))) flag = 0; else if (temp && flag && (f(x1, y1, x2, y2 - 1, x3, y3) || f(x1, y1, x2, y2 + 1, x3, y3))) flag = 0; else if (temp && flag && (f(x1, y1, x2, y2, x3 - 1, y3) || f(x1, y1, x2, y2, x3 + 1, y3))) flag = 0; else if (temp && flag && (f(x1, y1, x2, y2, x3, y3 - 1) || f(x1, y1, x2, y2, x3, y3 + 1))) flag = 0; if (!flag) { printf("ALMOST\n"); temp = 0; } else if (temp) printf("NEITHER\n"); } return 0; }
WUST Online Judge - 2161: 特殊的三角形