OneCoder Avatar
OneCodercoderli.com · 937 篇博文
二级

C++ 算法考级专栏

真题分析、矩阵探测、递归回溯与基础语法

🎨 视觉封面

【GESP】C++二级练习 luogu-b3685, [语言月赛202212] 计算

📅 2025-01-23·✍️ OneCoder·计算中...·⏱️ 4 分钟
#GESP#C++#数学函数

GESP二级练习,数学函数,难度★✮☆☆☆。

luogu-B3685 [语言月赛202212] 计算

题目要求

题目描述

给定一个 33 位整数 nn,计算:

  1. nn 的各位数字之和;
  2. nn 的各位数字之和的平方;
  3. nn 的各位数字之和的立方;

例如,当这个三位数是 123123 时:

  1. 各位数字之和为:1+2+3=61+2+3=6
  2. 各位数字之和的平方为:(1+2+3)2=(1+2+3)×(1+2+3)=36(1+2+3)^2=(1+2+3)\times (1+2+3)=36
  3. 各位数字之和的立方为:(1+2+3)3=(1+2+3)×(1+2+3)×(1+2+3)=216(1+2+3)^3=(1+2+3)\times (1+2+3)\times (1+2+3)=216

输入格式

输入只有一行一个三位整数 nn

输出格式

输出共三行,第一行为各位数字之和,第二行为各位数字之和的平方,第三行为各位数字之和的立方。

样例输入 #1

BASH
817

样例输出 #1

BASH
16
256
4096

数据规模与约定

对于全部的测试点,保证 100n999100 \leq n \leq 999


题目分析

首先,我们需要计算给定三位数的各位数字之和。我们可以通过对数进行取模和除法操作来实现。例如,对于数123,我们可以通过123 % 10 = 3得到最后一位数字,然后通过123 / 10 = 12去掉最后一位数字,重复这个过程直到数为0为止。 其次,我们需要计算各位数字之和的平方和立方。我们可以直接使用乘法操作来实现。例如,如果各位数字之和为6,那么平方为 6×6=366 \times 6 = 36,立方为 6×6×6=2166 \times 6 \times 6 = 216。 最后,我们输出计算结果。

示例代码

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

💡 OneCoder 资源指引

所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI

🤝 技术交流与答疑

欢迎加入:C++ GESP/CSP 考级答疑群(688906745)Java/Python交流群(982860385),点击可直接加群。

📚

猜你想读 · 相关文章推荐

OneCoder

OneCoder (lihongzheshuai)

一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com

💬 读者留言与交流

0 条讨论
✨ 支持 Markdown 语法格式
还没有留言,快来成为第一个讨论者吧!