玛卡巴卡的依古比古的叮叮车 2022-03-12 08:29 采纳率: 66.7%
浏览 118
已结题

c++设计函数计算a的b次方所有位数之和

设计一个函数,计算a的b次方所有位的数字之和,其中0<a<10,1<b<10000

img

  • 写回答

3条回答 默认 最新

  • 某新手 2022-03-12 09:32
    关注

    大概思路就是做大数乘法(题目给的最多可以是9^9999肯定超过了long long)
    大数乘法用数组来储存每个位的数据,模拟乘法进位过程,最后遍历一遍数组相加每个位的值输出
    然后代码在下面,希望能帮助到你

    #include <bits/stdc++.h>
    using namespace std;
    
    #define MAXNUMBER 10000
    
    long long getpowerdsum(int a, int b)
    {
        long long sum = 0;
        int next = 0;
        int add = 0;
        int num[MAXNUMBER] = {0};
        num[MAXNUMBER-1] = a;
        
    
        for(int i = 1; i < b; ++i)
        {
            for(int j = MAXNUMBER-1; j > 0; --j)
            {
                num[j] *= a;
                if(j == next)
                {
                    num[j] += add;
                    next = 0;
                    add = 0;
                }
                if(num[j] >= 10)
                {
                    next = j - 1;
                    add = num[j] / 10;
                    num[j] %= 10;
                }
            }
            /*  如果要输出查看计算过程就取消这里的注释
            for(int k = 1; k < MAXNUMBER; ++k)
            {
                cout << num[k];
            }
            cout << endl;
            */
        }
    
        for(int i = MAXNUMBER-1; i > 0; --i)
        {
            sum += num[i];
        }
    
        return sum;
    }
    
    int main()
    {
        cout << getpowerdsum(2,10) << endl;
        cout << getpowerdsum(9,10) << endl;
        cout << getpowerdsum(9,9999) << endl;
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月16日
  • 已采纳回答 3月16日
  • 创建了问题 3月12日

悬赏问题

  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用