Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program project1;
- uses sysutils;
- const
- BASE = 1000000000;
- type
- TLongNumber = record
- dig: array of qword;
- end;
- var aLong,bLong:TLongNumber;
- number2,number1:Ansistring;
- fin,fout:textfile;
- function MultLongLong(lhs,rhs:TLongNumber):TLongNumber;
- var remain:qword;
- i,j:dword;
- begin
- SetLength(result.dig,length(lhs.dig) + length(rhs.dig));
- for i := 0 to length(lhs.dig)-1 do
- begin
- remain := 0;
- for j := 0 to length(rhs.dig)-1 do
- begin
- remain := remain + lhs.dig[i] * rhs.dig[j] + Result.dig[i+j];
- Result.dig[i+j] := remain mod BASE;
- remain := remain div BASE;
- end;
- if remain > 0 then
- Result.dig[i + length(rhs.dig)] += remain;
- end;
- end;
- function toString(val: TLongNumber): Ansistring;
- var i:dword;
- divBASE:qword;
- IsZero:boolean;
- begin
- isZero := true;
- result := '';
- for i:=(length(val.dig) - 1) downto 0 do
- begin
- divBASE:=100000000;
- if (val.dig[i] = 0) and (isZero) and (i<>0) then
- continue
- else
- begin
- if (not(isZero)) then
- begin
- while ((val.dig[i] div divBASE = 0) and (divBase <> 1)) do
- begin
- result += '0';
- divBase := divBase div 10;
- end;
- end;
- result += inttostr(val.dig[i]);
- isZero := false;
- end;
- end;
- end;
- function fromString(const str: AnsiString): TLongNumber;
- var j,i,offset:qword;
- TimedStr:string;
- begin
- TimedStr := '';
- offset := 0;
- if (length(str) mod 9 <> 0) then
- offset := 1;
- j := 0;
- SetLength(result.dig,(length(str) div 9) + offset);
- for i := length(str) downto 1 do
- begin
- if str[i] <> ' ' then
- begin
- if length(TimedStr) = 9 then
- begin
- result.dig[j] := strtoint(TimedStr);
- j += 1;
- timedStr := '';
- end;
- timedStr := str[i]+timedStr;
- end;
- end;
- if TimedStr <> '' then result.dig[j] := strtoint(TimedStr);
- end;
- begin
- assignfile(fin,'input.txt');
- assignfile(fout,'output.txt');
- Reset(fin);
- Rewrite(fout);
- readln(number1);
- readln(number2);
- writeln(toString(MultLongLong(FromString(number1),FromString(number2))));
- close(fin);
- close(fout);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement