高精度乘低精度整数
高精度乘低精度整数:输入一个高精度整数和一个低精度整数,求它们的乘积。
输入
两行,第一行为高精度整数a,长度不超过255;第二行低精度整数m。
输出
一行,相乘的结果。
做题一定要注意边界情况。这题的边界就是0。
#include<stdio.h>
#include<string.h>
using namespace std;
char str1[265];
char str2[205];
int d1[205];
int d2;
int result[600];
int size=0;
int main()
{
scanf("%s",str1);
scanf("%d",&d2);
int L1=strlen(str1);
if(L1==1&&str1[0]=='0')
{
printf("0\n");
return 0;
}
if(d2==0)
{
printf("0\n");
return 0;
}
//首先倒叙高精度数,因为执行四则元算时候是从数字的低位开始运算的
//但是显示在计算机屏幕上的时候 第一位是最高位 所以在存储高精度数的时候 我们需要倒置高精度数
for(int i=L1-1;i>-1;i--)
{
d1[L1-1-i]=str1[i]-'0';
}
int c=0;
int temp=0;
for(int i=0;i<L1;i++)
{
temp=d1[i]*d2+c;
c=temp/10;
result[size++]=temp%10;
}
if(c!=0)
{
result[size++]=c;
}
for(int i=size-1;i>-1;i--)
{
printf("%d",result[i]);
}
}