m0_65699050 2022-08-09 09:17 采纳率: 80%
浏览 46
已结题

2的31次方 *96 总是改不对

问题遇到的现象和发生背景

计算2147483648*96

问题相关代码,请勿粘贴截图

#include
using namespace std;
int main()
{
char a[11]={"2147483648"};
int b[10]={0};
char f[3]={'9','6'};
int d[2]={0};
int i=0;
for(i=0;i<2;i++)
{
d[i]=f[1-i]-'0';
}
int c[12]={0};
for(i=0;i<10;i++)
b[i]=a[9-i]-'0';
//for(i=10;i>=0;i--)
//cout<<b[i];
int j;
for(j=0;j<2;j++)
{
int x=0;
for(i=0;i<10;i++)
{
c[i+j]=b[i]*d[j]+x+c[i+j];
x=c[i+j]/10; //进位
c[i+j]=c[i+j]%10;
}
c[i+j+1]=x;
}
// for(i=0;i<10;i++)
// cout<<b[i];
i=11;
while(c[i]==0)
{
i--;
}
for(i;i>=0;i--)
{
cout<<c[i];
}
return 0;
}

运行结果及报错内容

196 158 430 208 正确答案: 206 158 430 208

我的解答思路和尝试过的方法

我是用大整数乘法做的,但是为什么最后差了一点

我想要达到的结果

206 158 430 208

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2022-08-09 09:23
    关注
        for(j=0;j<2;j++)
        {
            for(i=0;i<10;i++)
            {
                c[i+j]=b[i]*d[j]+c[i+j];
                c[i+j+1]+=c[i+j]/10;   //不需要定义什么x,相乘的结果,直接将十位数加到高位上就可以了
                c[i+j]=c[i+j]%10;
            }
        }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月17日
  • 已采纳回答 8月9日
  • 创建了问题 8月9日

悬赏问题

  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)