用海伦公式计算面积,再用格式化字符串保留一位小数。
OJ: luogu
题目 ID: P5708
难度:入门
标签:python入门数学浮点
日期: 2026-07-15 17:56
题意
给出三角形三边
输出面积,保留
思路
题目已经给出公式。Python 中可以从 math 模块导入 sqrt 计算平方根,然后用 f-string 控制输出为一位小数。
brute.py 不适合这题,因为没有可枚举的方案空间;公式计算就是完整解法。
Python 知识
from math import sqrt只导入平方根函数,调用时直接写sqrt(...)。map(float, input().split())把三个输入 token 转成浮点数。/是浮点除法,计算半周长p很自然。f"{area:.1f}"控制输出固定位小数。
对应的本地 Python 笔记:
/home/rainboy/mycode/hugo-blog/content/program_language/python/input_output_and_strings.md:浮点输入和格式化输出背景。/home/rainboy/mycode/hugo-blog/content/program_language/python/oj_input_output_cheatsheet.md:按题面控制输出格式。/home/rainboy/mycode/hugo-blog/content/program_language/python/math_tools.md:常用数学工具与浮点注意事项。
代码
python
from math import sqrt
a, b, c = map(float, input().split())
p = (a + b + c) / 2
area = sqrt(p * (p - a) * (p - b) * (p - c))
print(f"{area:.1f}", end="")cpp
/**
* Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
* rbook: -> https://rbook.roj.ac.cn https://rbook2.roj.ac.cn
* rainboy的学习导航网站: https://idx.roj.ac.cn
* create_at: 2026-07-27 00:00
* update_at: 2026-07-27 00:00
*/
#include <bits/stdc++.h>
using namespace std;
int main() {
double a, b, c; // 三角形三边长度
cin >> a >> b >> c;
// 海伦公式:先算半周长 p,再求面积
double p = (a + b + c) / 2;
double area = sqrt(p * (p - a) * (p - b) * (p - c));
// 保留 1 位小数输出
printf("%.1f\n", area);
return 0;
}复杂度
只做常数次浮点运算,时间复杂度
总结
公式题要把题目给出的数学式直接翻译成代码。输出精度是这题最容易漏的细节,最后用 :.1f 固定一位小数。