YChuan_W 2023-11-15 22:07 采纳率: 75%
浏览 20
已结题

关于#c++#的问题:每个非负整数不超过10的2000次方输入格式:输入共两行,每行一个非负整数输出格式:输出一个非负整数表示乘积

这是洛谷p1303题,题目如下:

给出两个非负整数,求它们的乘积。
每个非负整数不超过10的2000次方
输入格式:
输入共两行,每行一个非负整数
输出格式:
输出一个非负整数表示乘积。

我的代码在本地编译能过而且答案是对的,上传到洛谷之后却一直wa,大家帮帮忙看看是怎么回事把
代码如下:


#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    char n[2000],m[2000];
    int k[2000]={0};
    cin.getline(n,2001);
    cin.getline(m,2001);//读取m和n两个数字
    if(n[0]=='0'||m[0]=='0')//如果有一个是零就直接打印0
    {
        cout<<'0';
        exit(0);
    }
    int lenm=strlen(m);//lenm表示m的长度
    int lenn=strlen(n);//lenn表示n的长度
    int in,im,ik=0;//imin,ik分别作为三个数组的下标
    for(in=lenn-1;in>=0;in--)//循环嵌套模拟手算乘法,就是高精乘
    {
         for(im=lenm-1,ik=lenn-1-in;im>=0;im--)
        {
            k[ik]+=((n[in]-'0')*(m[im]-'0'));
            k[ik+1]+=k[ik]/10;
            k[ik]%=10;
            ik++;
        }
    }
    if(k[ik]!=0)//检查最后一个是否进位,如果是0说明没进位,否则就是有进位,打印该值
    {
        cout<<k[ik];
    }
    for(int i=ik-1;i>=0;i--)//倒序打印数字
    {
        cout<<k[i];
    }
}
  • 写回答

3条回答 默认 最新

  • 有梦想的攻城狮 新星创作者: 后端开发技术领域 2023-11-16 01:27
    关注

    乘积用int类型的整数不一定能存的下,用long类型存

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月1日
  • 创建了问题 11月15日