下面是一种基础的C++算法实现,用于计算给定总页码n的数字计数:

#include <iostream>
#include <vector>

std::vector<int> countDigits(int n) {
    std::vector<int> count(10, 0); // 初始化数字计数数组,count[i]表示数字i在页码中出现的次数

    for (int i = 1; i <= n; ++i) {
        int num = i; // 当前页码
        while (num > 0) {
            int digit = num % 10; // 取出当前页码的最低位数字
            count[digit]++; // 数字计数加1
            num /= 10; // 去掉当前页码的最低位数字
        }
    }

    return count;
}

int main() {
    int n;
    std::cout << "请输入总页码n:";
    std::cin >> n;

    std::vector<int> count = countDigits(n);

    std::cout << "数字0~9在页码中出现的次数分别为:" << std::endl;
    for (int i = 0; i < 10; ++i) {
        std::cout << i << ": " << count[i] << std::endl;
    }

    return 0;
}

运行结果示例:

请输入总页码n:20
数字0~9在页码中出现的次数分别为:
0: 2
1: 12
2: 2
3: 1
4: 1
5: 1
6: 1
7: 1
8: 1
9: 1

以上代码中,countDigits函数用于计算数字计数,它通过循环遍历每个页码,并使用取模和除法操作来逐位提取数字,并将每个数字的计数加1。最后,返回一个包含数字计数的向量。main函数中,用户输入总页码n,然后调用countDigits函数计算数字计数,并将结果打印出来。

使用基础一点的cpp算法实现一本书的页码从自然数1开始顺序编码到自然数n。书的页码按通常习性编排每个页码都不含多余前导数字0数字计数问题要求对给定书的总页码n计算书的全部页码分别用到多少次数字012……9

原文地址: https://www.cveoy.top/t/topic/jb67 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录