• (大数乘法)两个至多长度为100的数字相乘


    模拟,竖式计算乘法。

    没有测试效率。欢迎更好的高精度乘法。

    #include <iostream>
    #include <memory.h>
    using namespace std;
    char a[100],b[100];//a是乘数,b是被乘数 
    int len_a,len_b;//a,b的长度 
    int c[205];//c为结果的存储 
    void mul(char a[],char b[],int l_a, int l_b)
    {
    	int i,j;
    	for(i = l_a-1;i >= 0; i--)
    	{
    		for(j = l_b - 1; j >= 0; j--)
    		{
    			c[i+j+2] =  c[i+j+2] + (a[i] -'0') * (b[j] - '0');
    			//计算乘数a的第i位与被乘数的每一位相乘之后存放在对应的数组位置上
    			//然后计算每一位上数字的和 
    			//这个操作比较好,保证了相乘之后相加形成了错位,
    			//易于进行C[]每一位相加操作 
    		}
    	}
    	for(i = l_a+l_b; i >= 0; i--)
    	{
    		//将每一位数字上确保是<10的数字 
    		c[i-1] = c[i-1] + c[i]/10;
    		c[i] = c[i] % 10;
    	} 
    	bool  flag = true;//标记是不是0*0 
    	//找到第一个不为0的数字输出,屏蔽前导0 
    	i = 0;
     
    	while(c[i] == 0)
    	{
    		i++;
    	}
    	for(;i<=l_a+l_b;i++)
    	{
    		flag = true;
    		cout<<c[i];
    	}
    	if(!flag) cout<<"0"; 
    	cout<<endl; 
    }
    int main()
    {
    	while(cin>>a>>b)
    	{
    		len_a = strlen(a);
    		len_b = strlen(b);
    		memset(c,0,sizeof(c));
    		mul(a,b,len_a,len_b);	
    	}
    }
    
  • 相关阅读:
    Python 图片识别
    Python发送邮件
    python argparse模块的使用
    datetime中时间的formatter整理
    redis持久化那些事(kēng)儿
    用python自建一个DNS服务器
    从windows到linux的换行转换工具dos2unix
    pypy入门:pypy的安装及使用介绍
    LRU缓存算法与pylru
    用python实现矩阵转置
  • 原文地址:https://www.cnblogs.com/newwy/p/1848367.html
Copyright © 2020-2023  润新知