加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数乘法模板

发布时间:2020-12-14 02:12:46 所属栏目:大数据 来源:网络整理
导读:/*两个非常大的数相乘模拟乘法运算*/#includeiostream#includecstdio#includecstring#includecstdlib#includecmath#includealgorithm#includestack#includecmathusing namespace std;#define MAX_N 221 int a1[MAX_N],a2[MAX_N]; char s1[MAX_N],s2[MAX_N];
/*
两个非常大的数相乘
模拟乘法运算
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<stack>
#include<cmath>
using namespace std;


#define MAX_N 221  
int a1[MAX_N],a2[MAX_N];  
char s1[MAX_N],s2[MAX_N];  
int p[MAX_N*2];  
int main()  
{  
    gets(s1);  
    gets(s2);  
    int i,j;  
    
    
    int len1=strlen(s1);  
    //将数组里的内容变为0 
    memset(a1,sizeof(a1));  
    memset(a2,sizeof(a2));  
    memset(p,sizeof(p));  
    
    j=0;  
    for(i=len1-1; i>=0; i--)  //用数组倒着记录字符串里的数据 
    {  
        a1[j++]=s1[i]-'0';  
    }  
    j=0;  
    int len2=strlen(s2);  
    for(i=len2-1; i>=0; i--)  
    {  
        a2[j++]=s2[i]-'0';  
    }  
    
    for(i=0; i<len1; i++)  
    {  
        for(j=0; j<len2; j++)  
        {  
            p[i+j] += a1[i]*a2[j];//模拟乘法  可以自己在草稿纸上写乘法然后运算看看是否满足这个规律 
        }  
    }  
    
    
    for(i=0; i<MAX_N*2; i++)  //进位 
    {  
        if(p[i]>=10)  
        {  
            p[i+1]+=p[i]/10;  
            p[i]%=10;  
        }  
    }  
    
    for(i=MAX_N*2-1; i>=0; i--)  //找到第一个非零点 
    {  
        if(p[i])  
        break;  
    }  
    
    for(int k=i; k>=0; k--)  //从后往前输出 
    {  
        printf("%d",p[k]);  
    }  
    printf("n");  
    return 0;  
}  

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读