top1编程
← 返回题目
题解

数值计算

1 条题解

  • 0
    @ 2026-8-4 16:08:45

    解题思路

    题目要求写一个函数 func(a, i),返回 i 个 a 组成的数。实现方法:循环 i 次,每次 r = r × 10 + a。例如 func(3,2):先 r=3,再 r=3×10+3=33。

    主程序累加 func(a, 1) + func(a, 2) + ... + func(a, n) 就是答案。

    参考代码

    #include <iostream>
    using namespace std;
    
    // 返回 i 个 a 组成的数,例如 func(3,2)=33
    int func(int a, int i) {
        int r = 0;
        for (int k = 0; k < i; k++) r = r * 10 + a;
        return r;
    }
    
    int main() {
        int a, n;
        cin >> a >> n;
        long long sum = 0;
        for (int i = 1; i <= n; i++) sum += func(a, i);
        cout << sum << endl;
        return 0;
    }
    

    复杂度分析

    函数每次循环 i 次,总次数 n(n+1)/2,时间复杂度 O(n²),额外空间复杂度 O(1)。

    • 1