1 solutions
-
0
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