大数 A*B

来源:互联网 发布:笔记本软件限制策略 编辑:程序博客网 时间:2024/06/05 02:39
#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;void fun(char s[],int c[]) //字符串转逆序数组 {for(int i=0;i<strlen(s);i++)c[i]=s[strlen(s)-1-i]-'0';}int main(){char str1[105],str2[1005];while(1){scanf("%s %s",str1,str2);int a1[110],a2[110],c[110];memset(a1,0,sizeof(a1));memset(a2,0,sizeof(a2));memset(c,0,sizeof(c));fun(str1,a1);fun(str2,a2);for(int i=0;i<100;i++)       //核心算法{int t=0,k=i;for(int j=0;j<100;j++)       //核心算法 {int x=a1[i]*a2[j];    x=x+t;    c[k]=c[k]+x%10;    if(c[k]>9)            //特别注意     {    c[k]=c[k]%10;    c[k+1]++;}    k++;    t=x/10;}}for(int i=104;i>=0;i--){if(i==0&&c[i]==0) printf("%d",0);if(c[i]!=0){for(int j=i;j>=0;j--){printf("%d",c[j]);}break;}}printf("\n");}} //多样例输入//123456789 987654321 =121932631112635269  

0 0
原创粉丝点击