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
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; }
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; }
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; }
Bài này in ra chu vi cũng phải ở dạng double nhé, int không full đâu
để 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";
}
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; }
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:
else:
xin code cho bạn
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 :)
tui để a,b,c kiểu long long vẫn AC bth mà
hinh nhu bai nay con phai chia truong hop tinh tam giac khac ngoai tam giac thuong
Bài này quá bịp, test 6 kh ac :))))
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')
bai nay bip qua mn oi minh xai heron ma khong ac >:( code
bạn để hết ở dạng double là ac nhé
hieuhfgr dở quas :)) t ac r
Dùng dc heron mà bạn phải đổi sang kiểu double mới duyệt đủ dc
mình xài long double r b
chu vi vẫn là số nguyên đấy