周长与面积计算

· · 题解

欢迎报名洛谷网校,期待和大家一起进步!

考点:循环结构

解析:图形的周长可以使用平移法计算,图形的面积可以使用 for 语句进行循环计算。

重点:图形的底边长度为 \frac{n(n+1)}{2},当 n 较大时会超过 int 上限(约 21 亿);正方形的面积为 i^2,当 i 较大时会超过 int 上限。因此需要使用 long long 存储计算值。

思考:正方形的面积之和是否会超过 long long 上限(约 9\times 10^{18})?

思考题回答:不会。因为有求和公式:1^2+2^2+3^2+\dots+n^2=\frac{n(n+1)(2n+1)}{6},代入 n=10^5 会发现,最大值约为 10^{15},不会超过 long long 上限。

参考代码:

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n;
    cin >> n;
    long long x = 1ll * n * (n + 1) / 2, area = 0;
    cout << 2 * x + 2 * n << endl; //周长
    for (int i = 1; i <= n; i++)
        area += 1ll * i * i;
    cout << area << endl; //面积
    return 0;
}