Mo_SFish 2022-02-04 12:49 采纳率: 80%
浏览 48

洛谷题P1009:使用高精度求阶乘。为什么for循环发生内存溢出了?该如何修改?要怎样避免?

img

img


 
#include<bits/stdc++.h>
 
using namespace std;
 
int n, c[250],sum[250];
 
void pluss(int n,int b[])
{
    if (n == 1)  return ;
    int  a[250] = { -1 };
    for (int i = 0; n; i++)
    {
        a[i] = (n % 10);
        n /= 10;
    }
    
    for (int i = 1; a[i] != -1; i++)
    {
        for (int j = 1; b[j] != -1; j++)
        {
            c[i + j - 1] += a[i] * b[j];
            c[i + j] += (c[i + j - 1] / 10);
            c[i + j] %= 10;
        }
    }
 
    pluss(n - 1, c);  
}
 
int main()
{
    cin >> n;
    
    while (n)
    {
        int b[250] = { -1 };
        memset(b, -1, sizeof(b));
        b[1] = 1;
        pluss(n, b);
 
        for (int i = 1; i < 250; i++)
        {
            sum[i] += c[i];
            sum[i + 1] += (sum[i] / 10);
            sum[i] = (sum[i] % 10);
        }
 
        memset(c, 0, sizeof(c));
    }
 
    for (int i = 249; i > 1; i--)
    {
        if (sum[i] != 0)
        {
            for (int j = i; j > 1; j--)
            {
                cout << sum[j];
            }
            cout << '\n';
            return 0;
        }
    }
 
}
  • 写回答

5条回答 默认 最新

  • CSDN专家-sinJack 2022-02-04 12:55
    关注

    数组越界异常了。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月4日

悬赏问题

  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,