TAMGIAC - Kiểm tra tam giác hợp lệ

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Cho ba số nguyên dương ~a,b,c~. Kiểm tra xem ba số đó có là ba cạnh của một tam giác không? Nếu không thì ghi ra NO, nếu là ba cạnh của một tam giác thì ghi ra chu vi, diện tích của tam giác đó (diện tích ghi dạng số thập phân với quy cách làm tròn đến hàng phần trăm).

Input

  • Gồm ba số nguyên dương ~a,b,c~ ghi trên một dòng, các số cách nhau bởi ít nhất một dấu cách.

Giới hạn:

  • ~50\%~ số test có ~1≤a≤ b≤ c≤10^4~
  • ~25\%~ số test khác có ~1≤a,b,c≤10^6~
  • ~25\%~ số test còn lại có ~1≤a,b,c≤10^8~

Output

  • Đáp số của bài toán.

Sample

Input #1
3 4 5
Output #1
12 6.00
Input #2
3 8 5
Output #2
NO

Problem source: Chuyên Sơn La Online Judge


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    kieuly123  đã bình luận lúc 15, Tháng 4, 2024, 14:25

    include<stdio.h>

    include<math.h>

    int main() { unsigned long a,b,c; scanf("%lu %lu %lu",&a,&b,&c); if((a+b)<=c || (a+c)<=b || (b+c)<=a ) { printf("NO"); } else { double p=(a+b+c)/2.0; double S=sqrt(p(p-a)(p-b)*(p-c)); long long T=a+b+c; printf("%lld %.2f",T,S); } return 0; }


  • 0
    Nguyencanhhiep  đã bình luận lúc 14, Tháng 4, 2024, 0:49

    include <bits/stdc++.h>

    using namespace std; int main() { double a,b,c,s,p; cin >> a >> b >> c; p = (a+b+c)/2; s = sqrt(p * (p-a) * (p-b) * (p - c)); if(a + b < c || a + c < b || c + b < a){ cout << "NO" << endl; } else{ cout << a + b + c << " " << setprecision(2) << fixed << s << endl; }
    return 0; }


  • 0
    Nguyencanhhiep  đã bình luận lúc 14, Tháng 4, 2024, 0:48

    include <bits/stdc++.h>

    using namespace std; int main() { double a,b,c,s,p; cin >> a >> b >> c; p = (a+b+c)/2; s = sqrt(p * (p-a) * (p-b) * (p - c)); if(a + b < c || a + c < b || c + b < a){ cout << "NO" << endl; } else{ cout << a + b + c << " " << setprecision(2) << fixed << s << endl; }
    return 0; }


  • 0
    thangok  đã bình luận lúc 8, Tháng 3, 2024, 5:24

    Bài này in ra chu vi cũng phải ở dạng double nhé, int không full đâu


  • 0
    Aothatday  đã bình luận lúc 26, Tháng 2, 2024, 2:43

    để double mới đc :V

    include <bits/stdc++.h>

    using namespace std; using ll=double; ll a,b,c; int main() { cin>>a>>b>>c; if(a<b)swap(a,b); if(a<c)swap(a,c); if(a<b+c) { ll q=a+b+c; cout<<q<<" "<<fixed<(q/2-a)(q/2-b)*(q/2-c)); } else cout<<"NO"; }


  • -2
    hailuacx  đã bình luận lúc 17, Tháng 1, 2024, 13:47

    Bài này có một số cách để ac full test. Đây là cách đơn giản nhất, không phải suy nghĩ nhiều:

    include <iostream>

    include <math.h>

    include <iomanip>

    using namespace std;

    int main(){ int a, b, c; cin >> a >> b >> c; if (a+b>c && b+c>a && a+c>b){ int cv = a+b+c; double p = 1.0cv/2; double dt = 1.0sqrt(p(p-a)(p-b)*(p-c)); cout << cv << " " << fixed << setprecision(2) << dt << endl; } else { cout << "NO";} return 0; }


  • -1
    DKN13  đã bình luận lúc 12, Tháng 1, 2024, 5:06

    Kiem tra tam giac roi tinh C va S

    import math

    a,b,c = [int(x) for x in input().split()]

    if a<=0 or b<=0 or c<=0:

    print("NO")
    

    else:

    if a+b>c and a+c >b and b+c>a:
        C = (a+b+c)
        P = C/2
        S = math.sqrt(P*(P-a)*(P-c)*(P-b))
        print(C)
        print(f"{S:.2f}")
    else:
        print("NO")
    

  • 0
    triduc_2k9  đã bình luận lúc 11, Tháng 1, 2024, 15:06

    xin code cho bạn


  • 2
    khanh_it1  đã bình luận lúc 23, Tháng 11, 2023, 14:08

    bài này khá lót tích :). rõ là nhập 3 số dương a b c. nhưng khai báo giới hạn có là long long vẫn ko full test được. bài này mn chuyển a b c thành kiểu double và tính như bth là pass full test nha. má nó cay :)


    • 0
      tri_88  đã bình luận lúc 29, Tháng 11, 2023, 10:38

      tui để a,b,c kiểu long long vẫn AC bth mà


  • 0
    khanh_it1  đã bình luận lúc 23, Tháng 11, 2023, 13:36

    hinh nhu bai nay con phai chia truong hop tinh tam giac khac ngoai tam giac thuong


  • 2
    vdtue  đã bình luận lúc 7, Tháng 9, 2023, 13:07

    Bài này quá bịp, test 6 kh ac :))))


    • 0
      tuattsx3  đã bình luận lúc 24, Tháng 10, 2023, 11:44

      a = list(map(int,input().split())); a.sort(); if a[0]+a[1]> a[2]: cvi = sum(a) x = cvi/2 s = (x(x-a[0])(x-a[1])(x-a[2]))*0.5 s = '%.2f'%(s) print(cvi,s) else: print('NO')


  • -2
    hieuhfgr  đã bình luận lúc 7, Tháng 9, 2023, 13:05

    bai nay bip qua mn oi minh xai heron ma khong ac >:( code


    • 0
      haidang3004  đã bình luận lúc 9, Tháng 12, 2023, 5:23

      bạn để hết ở dạng double là ac nhé


    • 0
      vdtue  đã bình luận lúc 14, Tháng 9, 2023, 13:13

      hieuhfgr dở quas :)) t ac r


    • 0
      khakham  đã bình luận lúc 13, Tháng 9, 2023, 14:07

      Dùng dc heron mà bạn phải đổi sang kiểu double mới duyệt đủ dc


      • 0
        vdtue  đã bình luận lúc 14, Tháng 9, 2023, 13:12

        mình xài long double r b


        • 0
          nguien_24  đã bình luận lúc 3, Tháng 1, 2024, 10:15

          chu vi vẫn là số nguyên đấy