目录

2025-03-16-学习记录-CC-PTA-习题4-4-特殊a串数列求和

2025-03-16 学习记录–C/C++-PTA 习题4-4 特殊a串数列求和

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻

一、题目描述 ⭐️

习题4-4 特殊a串数列求和

给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa+⋯+aa⋯a(n个a)之和。

输入格式:

输入在一行中给出不超过9的正整数a和n。

输出格式:

在一行中按照“s = 对应的和”的格式输出。

输入样例:

2 3

输出样例:

s = 246

二、解题思路 ⭐️

代码中的 getNum() 函数解析:👇🏻

a=2 为例:🦋

n=1 时: 2

2 * 10^0

n=2 时: 22

2 * 10^1 + 2 * 10^0

n=3 时: 222

2 * 10^2 + 2 * 10^1 + =2 * 10^0

。。。

n=n 时: n个2

2 * 10^(n - 1) + ... + 2 * 10^2 + 2 * 10^1 + =2 * 10^0

三、代码(C语言)⭐️

#include <stdio.h>  // 包含标准输入输出库,用于使用scanf和printf等函数
#include <math.h>   // 包含数学函数库,用于使用pow函数

// 定义一个递归函数,生成由数字a重复n次组成的数
int getNum(int n, int a) {
    // 如果n为1,直接返回a(例如a=2,n=1时返回2)
    // 否则,返回a乘以10的(n-1)次方,加上递归调用getNum(n-1, a)的结果
    return n == 1 ? a : a * pow(10, n - 1) + getNum(n - 1, a);
}

int main() {
    int a, n;  // 定义变量a和n,分别表示数字和重复次数
    scanf("%d %d", &a, &n);  // 从用户输入中读取a和n的值

    int sum = 0;  // 定义变量sum,用于存储累加结果,初始值为0

    // 使用for循环计算从1到n的所有由a重复i次组成的数的和
    for (int i = 1; i <= n; i++) {
        sum += getNum(i, a);  // 调用getNum函数生成由a重复i次组成的数,并累加到sum中
    }

    // 输出累加结果sum
    printf("s = %d", sum);

    return 0;  // 程序正常结束
}

https://i-blog.csdnimg.cn/direct/5388290a7a1c4ca7a559904c18037d0f.png

https://i-blog.csdnimg.cn/direct/07820cbd991e435c9a3acb0d74ff242e.jpeg