题目背景
古谯楼是莆田的地标性古建,也是福建省仅存完整的一座鼓楼,也是国内现存最完整的鼓楼之一,莆田人常把它当作“兴化府”的象征。现为福建省重点文物保护单位。
题目描述
假设将古谯楼底部看成一个长方形。小T通过查阅数据得知它的周长为 c,其中一面墙的长度为a 。请你帮忙计算古谯楼的占地面积有多大?
输入格式
第一行两个整数 c,a,分别表示古谯楼底部周长和某一面墙的长度。
输出格式
输出一个整数,表示占地面积
#include <iostream>
int calculateArea(int c, int a) {
int b = (c - 4 * a) / 2;
int area = a * b;
return area;
}
int main() {
int c, a;
std::cout << "请输入古谯楼底部周长:";
std::cin >> c;
std::cout << "请输入某一面墙的长度:";
std::cin >> a;
int area = calculateArea(c, a);
std::cout << "古谯楼的占地面积为:" << area << std::endl;
return 0;
}
根据面积计算另一面墙的长度,然后求占地面积
#include <iostream>
using namespace std;
int main() {
int c, a;
cin >> c >> a;
// 计算另一面墙的长度
int b = (c - 2 * a) / 2;
int area = a * b;
cout << area << endl;
return 0;
}
数据范围 c<=5 * 10^5,所以,两条边的长度可能为10^5级,两条边的乘积(也就是面积)可能会达到10^10,超出int类型的范围,所以,再计算面积的时候,需要使用double类型(或者 long long 类型)。
代码如下:
#include<iostream>
using namespace std;
int main()
{
int a, b, c;
cin >> c >> a; //输入周长和一条边
b = c / 2 - a; //得到另一条边
double area = (double)a * b; //转换成double类型进行计算,避免结果越界
cout << area;
return 0;
}