Discuz! Board

 找回密码
 立即注册
查看: 369|回复: 0

3.25 高精度乘法

[复制链接]

54

主题

66

帖子

574

积分

高级会员

Rank: 4

积分
574
发表于 2023-3-25 21:01:00 | 显示全部楼层 |阅读模式
[C++] 纯文本查看 复制代码
void g_chen()//10进制高精度乘法 
{
    char a[1000],b[1000];
    int a1[1000]={0},b1[1000]={0},c1[2001]={0};
    cin>>a>>b;  //输入 
    int len_a=strlen(a);//截取长度 
    int len_b=strlen(b);
    //int len=max(len_a,len_b);
    int jw=0;//进位 
    for(int i=len_a-1;i>=0;i--)//反向+转换int 
    {
        a1[len_a-1-i]=a[i]-'0';
    }
     
    for(int i=len_b-1;i>=0;i--)
    {
        b1[len_b-1-i]=b[i]-'0';
    }
     
    for(int i=0;i<len_a;i++)//乘法 
    for(int j=0;j<len_b;j++)
    {
        c1[i+j]+=a1[i]*b1[j];
        c1[i+j+1]+=(c1[i+j]/10);
        c1[i+j]=c1[i+j]%10;
    }
     
    int flag=1;
    for(int i=len_a+len_b;i>=0;i--)
    {
        if((flag==1)&&c1[i]==0){}//如果c第1个位0,跳过 
        else
        {cout<<c1[i];
        flag=0;
        }   
    }
    if(flag==1) cout<<0;//如果没输出任何数,输出0 
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-2-13 04:52 , Processed in 0.048353 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

快速回复 返回顶部 返回列表