文章

【GESP】C++二级模拟 luogu-b3994, [GESP 二级模拟] 周长与面积计算

GESP二级模拟题,多层循环、分支语句练习,难度★✮☆☆☆。

luogu-B3994 [GESP 二级模拟] 周长与面积计算

题目要求

题目描述

小洛有 $n$ 个正方形,第 $1$ 个正方形的边长为 $1$,第 $2$ 个正方形的边长为 $2$,以此类推,第 $n$ 个正方形的边长为 $n$。它们被紧密地排列成一行。小洛想要知道这个图案的周长和面积分别是多少。

例如当 $n=5$ 时的图案如下图所示。红色的边框代表整个图案的周长,绿色区域代表整个图案的面积:

P1304

输入格式

输入一个正整数 $n$。

输出格式

输出两行。

第一行一个正整数代表图案的周长;

第二行一个正整数代表图案的面积;

样例输入 #1

1
5

样例输出 #1

1
2
40
55

样例输入 #2

1
9

样例输出 #2

1
2
108
285

提示

对于 $70\%$ 的数据,$1 \leq n \leq 100$;

对于所有数据,$1 \leq n \leq 100000$。


题目分析

解题思路

  1. 读取输入的正整数 $n$。
  2. 计算图案的周长 $l$,根据题目描述,周长为 $(1 + n) \times n + n \times 2$。
  3. 计算图案的面积 $s$,根据题目描述,面积为从 $n$ 到 $1$ 的所有正整数的平方和。
  4. 输出图案的周长 $l$ 和面积 $s$。


示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
int main() {
    long long n; // 定义一个长整型变量n
    cin >> n; // 从标准输入流中读取n的值
    long long s = 0, l = 0; // 定义两个长整型变量s和l,初始化为0
    for (long long i = n; i >= 1; i--) { // 从n开始循环,每次递减1
        s += i * i; // 计算i的平方并加到s上
    }
    l = (1 + n) * n; // 计算l的值
    l += n * 2; // 计算l的值
    cout << l << endl; // 输出l的值并换行
    cout << s; // 输出s的值
    return 0; // 返回0,表示程序正常结束
}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页

luogu-”系列题目已加入洛谷Java、C++初学团队作业清单,可在线评测,团队名额有限,欢迎加入。

bcqm-”系列题目可在编程启蒙题库进行在线评测。

本文由作者按照 CC BY 4.0 进行授权