牛客刷题-大整数相乘
Posted Calm微笑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客刷题-大整数相乘相关的知识,希望对你有一定的参考价值。
题目描述
有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。
输入描述:
空格分隔的两个字符串,代表输入的两个大整数
输出描述:
输入的乘积,用字符串表示
示例1
输入
复制
72106547548473106236 982161082972751393
输出
复制
70820244829634538040848656466105986748
C++实现
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char a[11000],b[11000];
int aa[11000],bb[11000],ans[11000];
int main()
scanf("%s",a);
scanf("%s",b);
int i, j;
int len1 = strlen(a);
int len2 = strlen(b);
for(i=0,j=len1-1; i<len1,j>=0; i++,j--)
aa[i]=a[j]-'0';
for(i=0,j=len2-1; i<len2,j>=0; i++,j--)
bb[i]=b[j]-'0';
int now;
int cnt = -1;
for(i=0; i<len1; i++)
now = i;
int jin = 0;
for(j=0; j<len2; j++)
int temp = aa[i] * bb[j] +jin + ans[now];
ans[now] = temp % 10;
jin = temp / 10;
now++;
cnt = max(now, cnt);
while(jin!=0)
int tmp=jin+ans[now];
ans[now] = tmp%10;
jin = tmp/10;
cnt = max(now,cnt);
while(ans[cnt]==0&&cnt!=0) cnt--;
for(int i=cnt;i>=0;i--)
printf("%c",ans[i]+'0');
puts("");
return 0;
Python实现
import sys
numStr1,numStr2=sys.stdin.readline().split()
num1,num2=int(numStr1),int(numStr2)
sum=0
pos=1
for i in numStr2[::-1]:
sum+=num1*int(i)*pos
pos*=10
print(sum)
以上是关于牛客刷题-大整数相乘的主要内容,如果未能解决你的问题,请参考以下文章