面积(C++)时间限制:1000ms内存限制:512mb

题目背景
古谯楼是莆田的地标性古建,也是福建省仅存完整的一座鼓楼,也是国内现存最完整的鼓楼之一,莆田人常把它当作“兴化府”的象征。现为福建省重点文物保护单位。

题目描述
假设将古谯楼底部看成一个长方形。小T通过查阅数据得知它的周长为 c,其中一面墙的长度为a 。请你帮忙计算古谯楼的占地面积有多大?

输入格式
第一行两个整数 c,a,分别表示古谯楼底部周长和某一面墙的长度。

输出格式
输出一个整数,表示占地面积

img


#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;
}