Python_enjoy 2023-10-01 10:20 采纳率: 76.9%
浏览 6

C++,打印杨辉三角

C++,打印杨辉三角,题目要求模4294967296,1000时错误:

#include<iostream>
using namespace std;
int arr[1005][2015];
int main()
{  
    int n;
    cin>>n;
    int m = 2 * n-1;
     
    for (int i = 0; i < n; i++)
    {
        arr[i][n - i- 1] = 1;
        arr[i][n + i -1] = 1;
  
    }
    for (int i = 2; i < n; i++)  
    {
        for (int j = n - i + 1; j < n-2+i; j = j + 2)
            arr[i][j] = (arr[i - 1][j - 1] + arr[i - 1][j + 1])%4294967296;
    }
    int p;
    for (int i = 0; i < n; i++) 
    {
        p = 1;
        for (int j = n - i - 1; p < i + 2; j = j + 2)
        {
            cout << arr[i][j] << " "; 
            p = p + 1;
        }
        cout << endl;
    }
    return 0;
}
  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-10-01 10:25
    关注

    引自强大而免费的微信小程序:皆我百晓生。


    你的代码在计算杨辉三角时可能会引发整数溢出的问题。对于大数相加,你可以使用模运算进行处理,避免溢出。你已经使用了%4294967296对结果取模,但是计算过程中可能仍会溢出。

    你可以考虑使用长整型(long long)来存储杨辉三角的每个元素,以避免溢出问题。此外,你需要对取模的运算进行修改,确保每个元素都落在模4294967296的范围内。

    以下是修改后的代码:

    #include<iostream>
    using namespace std;
    
    const long long MOD = 4294967296;
    const int MAXN = 1005;
    const int MAXM = 2015;
    
    long long arr[MAXN][MAXM];
    
    int main()
    {
        int n;
        cin >> n;
        int m = 2 * n - 1;
    
        for (int i = 0; i < n; i++)
        {
            arr[i][n - i - 1] = 1;
            arr[i][n + i - 1] = 1;
    
        }
        for (int i = 2; i < n; i++)  
        {
            for (int j = n - i + 1; j < n - 2 + i; j = j + 2)
                arr[i][j] = (arr[i - 1][j - 1] + arr[i - 1][j + 1]) % MOD;
        }
        int p;
        for (int i = 0; i < n; i++)
        {
            p = 1;
            for (int j = n - i - 1; p < i + 2; j = j + 2)
            {
                cout << arr[i][j] << " ";
                p = p + 1;
            }
            cout << endl;
        }
        return 0;
    }
    

    这样,你就能正确地打印出模4294967296的杨辉三角了。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月1日

悬赏问题

  • ¥15 请教各位,Android加载数据问题,每次点击获取数据之后无法更新。
  • ¥15 汇编语言没有主程序吗?
  • ¥15 这个函数为什么会爆内存
  • ¥15 无法装系统,grub成了顽固拦路虎
  • ¥15 springboot aop 应用启动异常
  • ¥15 matlab有关债券凸性久期的代码
  • ¥15 lvgl v8.2定时器提前到来
  • ¥15 qtcp 发送数据时偶尔会遇到发送数据失败?用的MSVC编译器(标签-qt|关键词-tcp)
  • ¥15 cam_lidar_calibration报错
  • ¥15 拓扑学,凸集,紧集。。