文章

15

粉丝

142

获赞

26

访问

19.2k

头像
计算Sn 题解:
P1043 北京大学机试题
发布于2023年5月4日 16:10
阅读数 1.2k

#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;

int n, m, res, nn; // n 存储输入的数字,m 存储数字位数,res 存储结果,nn 用于存储计算中间值

int main() {
    cin >> n >> m; // 输入需要计算的数字和位数
    for (int i = 0; i < m; i ++) { // 循环 m 次,每次将 n 乘以 10 的 i 次方加入到 nn 中,并将 nn 累加到 res 中
        nn = n * pow(10, i) + nn; // 将 n 乘以 10 的 i 次方加入到 nn 中,用于记录每一位数字
        res += nn; // 累加 nn 到结果中
    }
    cout << res; // 输出结果
    return 0;
}

本程序实现了将一个数字按位数拆分后相加的功能,具体实现如下:

  • 首先通过 cin 输入待计算的数字和位数;
  • 然后使用 for 循环累加每一位数字:每次循环将当前数字乘以 10 的 i 次方并加上前一个数累加到的值,得到当前位数的值,再将该值累加到结果中;
  • 最后使用 cout 输出结果。

需要注意以下几点:

  • 为了记录每一位数字,使用了一个中间变量 nn,每次循环将当前数字乘以 10 的 i 次方加入到 nn 中,用于记录当前位数的值;
  • pow(10, i) 表示求 10 的 i 次方;
  • 需要注意累加结果时的初始值应为 0。
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发