2011-05-29 22:26:29Morris

d980. 11479 - Is this the easiest problem?

http://zerojudge.tw/ShowProblem?problemid=d980

內容 :

三角形是一種有三個正邊的幾何形狀。但是並非任意三個邊都可以形成一個三角形,這三個邊必需構成一個封閉區域。三角形可以其邊長來分類,本題便是要你判定三角形的種類。 

輸入說明 :

輸入的第一行有一個正整數 T<20,表示有 T 筆測試資料。接下來的 T 行每行有三個 32 位元的有號整數。

輸出說明 :

對於每筆測資請輸出一行,其格式為:Case {x}: {triangle type}。其中 x 表示測資編號,{triangle type} 為三角形的種類。依三邊長的值,{triangle type} 是以下的一種: 

  • Invalid - 這三邊無法形成一個三角形 
  • Equilateral  -  三邊均等長
  • Isosceles  - 恰有兩邊等長
  • Scalene - 三邊均不等長

範例輸入 :

41 2 51 1 14 4 23 4 5

範例輸出 :

Case 1: InvalidCase 2: EquilateralCase 3: IsoscelesCase 4: Scalene

提示 :

32 位元的有號整數 (32 bit signed integer):-2147483648 ~ 2147483647

出處 :

UVa ACM 11479 (管理:snail)

這題很不湊巧地,卡在if 中的型態,要用long long

#include<stdio.h>
#define swap(x,y) {long long t=x; x=y; y=t;}
int main() {
    int T, C = 0;
    scanf("%d", &T);
    while(T--) {
        long long n[3];
        scanf("%lld %lld %lld", &n[0], &n[1], &n[2]);
        if(n[0] > n[2]) swap(n[0], n[2]);
        if(n[1] > n[2]) swap(n[1], n[2]);
        if(n[0] > n[1]) swap(n[0], n[1]);
        printf("Case %d: ",++C);
        if(n[0] + n[1] <= n[2]) puts("Invalid");
        else if(n[0] == n[2] && n[1] == n[2]) puts("Equilateral");
        else if(n[0] == n[1] || n[1] == n[2]) puts("Isosceles");
        else puts("Scalene");
    }
    return 0;
}