1 solutions

  • 0
    @ 2024-12-10 23:27:11

    C :

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define maxn 210
    
    typedef struct bign{
    int a[maxn];
    int len;
    }bign;
    
    bign getbign(char temp[]){
    bign A;
    A.len = 0;
    memset(A.a,0,sizeof(A.a));
    for(int i = strlen(temp)-1;i >= 0; i--) {
        A.a[A.len++] = temp[i]-48;
    }
    return A;
    }
    
    bign add_bign(bign A, bign B) {
    int carry = 0;
    bign C;
    C.len=0;
    memset(C.a,0,sizeof(C.a));
    for(int i = 0;i < A.len || i < B.len; i++) {
        int temp = A.a[i] + B.a[i] + carry;
        C.a[C.len++] = temp % 10;
        carry = temp / 10;
    }
    if(carry != 0){
        C.a[C.len++] = carry;
    }
    return C;
    }
    
    bign multi_bign(bign A, int B){
    bign C;
    C.len = 0;
    memset(C.a,0,sizeof(C.a));
    int carry = 0;
    for(int i = 0;i < A.len; i++) {
        int temp = A.a[i] * B + carry;
        C.a[C.len++] = temp % 10;
        carry = temp / 10;
    }
    while(carry != 0) {
        C.a[C.len++] = carry % 10;
        carry /= 10;
    }
    return C;
    }
    
    bign div_bign(bign A, int B) {
    bign C;
    C.len = A.len;
    memset(C.a,0,sizeof(C.a));
    int r = 0;
    for(int i = A.len - 1;i >= 0; i--) {
        r = r*10 + A.a[i];
        if(r < B)C.a[i] = 0;
        else {
            C.a[i] = r / B;
            r = r % B;
        }
    }
    while(C.len - 1 >= 1 && C.a[C.len - 1] == 0) {
        C.len--;
    }
    return C;
    }
    
    bign multi(bign A, bign B) {
    bign C;
    C.len = 0;
    memset(C.a,0,sizeof(C.a));
    bign carry;
    carry.len = 0;
    memset(carry.a,0,sizeof(carry.a));
    for(int i = 0;i < A.len; i++) {
        bign temp = add_bign(multi_bign(B,A.a[i]),carry);
        C.a[C.len++] = temp.a[0];
        carry = div_bign(temp,10);
    }
    while(carry.len>1 || (carry.len==1 && carry.a[0]!=0)) {
        C.a[C.len++] = carry.a[0];
        carry = div_bign(carry,10);
    }
    while(C.a[C.len-1]==0 && C.len>1)C.len--;
    return C;
    }
    
    void print(bign A) {
    for(int i = A.len-1;i >= 0; i--){
        printf("%d",A.a[i]);
    }
    printf("\n");
    }
    
    int main()
    {
        char temp[maxn];
        while(scanf("%s",temp) != EOF) {
            bign A = getbign(temp);
            scanf("%s",temp);
            bign B = getbign(temp);
            print(multi(A,B));
        }
        return 0;
    }
    

    C++ :

    #include<iostream>
    using namespace std;
    string x1,x2;
    long j[201],x[101],y[101];
    int a,b,c,d,pd;
    void djcheng(int b,int z)
    {
         int e;
         for (e=z;e<=a+z;e++)
        {
            j[e]+=x[e-z]*b;
            j[e+1]+=(j[e]/10);
            j[e]=j[e]%10;
        }
    }
    int main()
    {
        cin>>x1>>x2;
        a=x1.length()-1;
        b=x2.length()-1;
        for (c=0;c<=a;c++) x[a-c]=x1[c]-'0';
        for (c=0;c<=b;c++) y[b-c]=x2[c]-'0';
        for (c=0;c<=b;c++)
        {
            djcheng(y[c],c);
        }
        pd=a+b+1;
        if (j[pd]==0) pd--;
        if ((x1[0]=='0') || (x2[0]=='0')) cout<<"0";
        else for (c=pd;c>=0;c--) cout<<j[c];
        //system("pause");
        return 0;
    }
    
    

    Pascal :

    var a,b,c:array[1..2000] of longint;
        s1,s2,s3:string;
        la,lb,lc,i,j,t:longint;
    begin
      readln(s1);
      readln(s2);
      la:=length(s1); lb:=length(s2);
      if (la<lb) or (la=lb) and (s1<s2) then
      begin
        s3:=s1; s1:=s2; s2:=s3;
        la:=length(s1); lb:=length(s2);
      end;
      for i:=1 to la do
        a[la+1-i]:=ord(s1[i])-48;
      for i:=1 to lb do
        b[lb+1-i]:=ord(s2[i])-48;
      for i:=1 to la do
      begin
        t:=0;
        for j:=1 to lb do
        begin
          c[i+j-1]:=c[i+j-1]+a[i]*b[j]+t;
          t:=c[i+j-1] div 10;
          c[i+j-1]:=c[i+j-1] mod 10;
        end;
        c[i+j]:=t;
      end;
      lc:=la+lb;
      while (c[lc]=0) and (lc>1) do dec(lc);
      for i:=lc downto 1 do
        write(c[i]);
      writeln;
    end.
    

    Java :

    import java.math.BigInteger;
    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner cin =new Scanner(System.in);
    		BigInteger a,b,c;
    		a=cin.nextBigInteger();
    		b=cin.nextBigInteger();
    		c=a.multiply(b);
    		System.out.println(c);
    	}
    }
    
    

    Python :

    # coding=utf-8
    s=eval(input())
    t=eval(input())
    print(s*t)
    
    • 1

    Information

    ID
    595
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By