当前位置:网站首页>Haut OJ 1357: lunch question (I) -- high precision multiplication

Haut OJ 1357: lunch question (I) -- high precision multiplication

2022-07-05 05:17:00 hunziHang

Problem description :

   12 It's o'clock again , It's time for lunch , Small C  Collapse in bed and don't want to get up , Small A  Don't want to get used to him , So I said to him :“ Small C, You didn't make it last week choice  Sister's addition , Now you can make choice  Sister's multiplication , I'll bring you some rice .” Can you help me C.

Input :

   Two integers  A  and  B,A and B The length of l(0 <= l <= 1000).

Output :

Multi instance testing , Output  A*B  Result .

The sample input :

4038
5255
55718
7221
8160
104906
3511906
8767574

Sample output :

21219690
402339678
856032960
30790895736044

Cause analysis :

1. Create three int Array , Initialize to 0, Record length , Save each number in the string into the array cell ( Input backwards )

2. Multiply each number ,     c[i+j-1] =a[i]*b[j];        c[i+j]+=c[i+j-1]/10;  Don't let it slip +

3. Remove leading 0
              


Solution :


#include<bits/stdc++.h>
using namespace std;
#define endl "\n"
long long a[1000005];
int main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    string str1,str2;
    while(cin>>str1>>str2)
 {

    int a[2000],b[2000],c[5000],i,j,len;
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    a[0]=str1.length();
    b[0]=str2.length();
    for(i=1;i<=a[0];i++)
        a[i]=str1[a[0]-i]-'0';
    for(i=1;i<=b[0];i++)
        b[i]=str2[b[0]-i]-'0';
    for(i=1;i<=a[0];i++)
        for(j=1;j<=b[0];j++)
    {
        c[i+j-1]+=a[i]*b[j];
        c[i+j]+=c[i+j-1]/10;
        c[i+j-1]%=10;

    }
    len=a[0]+b[0]+1;
    while(len>1&&c[len]==0)
        len--;

    for(i=len;i>=1;i--)
        cout<<c[i];
        cout<<endl;


 }

    return 0;
}

原网站

版权声明
本文为[hunziHang]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140622509277.html