【GESP】C++二级练习 luogu-b3685, [语言月赛202212] 计算
GESP二级练习,数学函数,难度★✮☆☆☆。
luogu-B3685 [语言月赛202212] 计算
题目要求
题目描述
给定一个 $3$ 位整数 $n$,计算:
- $n$ 的各位数字之和;
- $n$ 的各位数字之和的平方;
- $n$ 的各位数字之和的立方;
例如,当这个三位数是 $123$ 时:
- 各位数字之和为:$1+2+3=6$;
- 各位数字之和的平方为:$(1+2+3)^2=(1+2+3)\times (1+2+3)=36$;
- 各位数字之和的立方为:$(1+2+3)^3=(1+2+3)\times (1+2+3)\times (1+2+3)=216$。
输入格式
输入只有一行一个三位整数 $n$。
输出格式
输出共三行,第一行为各位数字之和,第二行为各位数字之和的平方,第三行为各位数字之和的立方。
样例输入 #1
1
817
样例输出 #1
1
2
3
16
256
4096
数据规模与约定
对于全部的测试点,保证 $100 \leq n \leq 999$。
题目分析
首先,我们需要计算给定三位数的各位数字之和。我们可以通过对数进行取模和除法操作来实现。例如,对于数123,我们可以通过123 % 10 = 3得到最后一位数字,然后通过123 / 10 = 12去掉最后一位数字,重复这个过程直到数为0为止。 其次,我们需要计算各位数字之和的平方和立方。我们可以直接使用乘法操作来实现。例如,如果各位数字之和为6,那么平方为 $6 \times 6 = 36$,立方为 $6 \times 6 \times 6 = 216$。 最后,我们输出计算结果。
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <cmath>
#include <iostream>
using namespace std;
int main() {
int n; // 定义变量n
cin >> n; // 从输入流中读取n的值
int ans = 0; // 初始化变量ans为0
while (n != 0) { // 当n不为0时循环
ans += n % 10; // 将n的最后一位数字加到ans中
n /= 10; // 将n除以10,去掉最后一位数字
}
int count = pow(ans, 2); // 计算ans的平方
int count_2 = pow(ans, 3); // 计算ans的立方
cout << ans << endl << count << endl << count_2; // 输出ans、ans的平方和ans的立方
return 0;
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页
“luogu-”系列题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
“bcqm-”系列题目可在编程启蒙题库进行在线评测。
本文由作者按照 CC BY 4.0 进行授权