Discuz! Board

 找回密码
 立即注册
查看: 598|回复: 1

10进制高精度乘法_20230323

[复制链接]

574

主题

758

帖子

243万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2435189

烈空座 Lv:100
发表于 2023-3-23 20:35:17 | 显示全部楼层 |阅读模式
[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){}
		else
		{cout<<c1[i];
		flag=0;
		} 	
	}
	if(flag==1) cout<<0;
} 

回复

使用道具 举报

574

主题

758

帖子

243万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2435189

烈空座 Lv:100
 楼主| 发表于 2023-3-27 19:08:59 | 显示全部楼层
[C] 纯文本查看 复制代码
void g_chufa()//10进制高精除法 高精/低精 
{
    char a[2000];
    int a1[2000],c[2000]={0},flag=0;
    int b,x=0;
    cin>>a>>b;
     
    for(int i=0;i<strlen(a);i++)//转换int 
    {
        a1[i]=a[i]-'0';
    }
     
    for(int i=0;i<strlen(a);i++)//x余数 
    {
        c[i]=(a1[i]+10*x)/b;
        x=a1[i]%b;
    }
     
    for(int i=0;i<strlen(a);i++)
    {
        if((flag==0)&&c[i]==0){}
        else
        {
            cout<<c[i];
            flag=1;
        }
    }
    if(flag==0) cout<<0;
} 
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-2-12 14:14 , Processed in 0.050675 second(s), 28 queries .

Powered by Discuz! X3.4

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

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