之前写过用java解决大数问题 链接 java大数
然后c的解法比较普遍的简单的就是模拟乘法竖式运算
参考聚聚的博客 也比较好理解 写一个竖式乘法过程对照来一遍就好了
直接贴代码了 题目是51nod1027 大数乘法
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<math.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+7;
char s1[maxn],s2[maxn];
int a[maxn],b[maxn],c[maxn*2];
int main(){
while(~scanf("%s%s",s1,s2)){
if(s1[0]=='0'||s2[0]=='0'){printf("0\n");continue;}
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
int l1=strlen(s1),l2=strlen(s2);
for(int i=0;i<l1;i++)a[i]=s1[l1-i-1]-'0';
for(int i=0;i<l2;i++)b[i]=s2[l2-i-1]-'0';
for(int i=0;i<l1;i++){
for(int j=0;j<l2;j++){
c[i+j]=a[i]*b[j]+c[i+j];//按位进行乘法
c[i+j+1]=c[i+j+1]+c[i+j]/10;//处理进位
c[i+j]=c[i+j]%10;
}
}
int flag=l1+l2;
while(!c[flag])flag--;
for(int i=flag;i>=0;i--)printf("%d",c[i]);
printf("\n");
}
return 0;
}