Advertisement
Guest User

Untitled

a guest
Oct 21st, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. program MultiplicationOfLongNumbers;
  2. {$H+}
  3.  
  4. const
  5. leng = 100000;
  6. ileng = 200000;
  7.  
  8. var
  9. mul: array[1..leng] of byte;
  10. intermediate: array[1..ileng] of byte;
  11. factor: array of byte;
  12. index, k, mulindex: integer;
  13. number: string;
  14. now: boolean;
  15. t: text;
  16.  
  17. begin
  18. assign(t, 'input.txt');
  19. reset(t);
  20.  
  21. for index := 1 to leng do mul[index] := 0;
  22. for index := 1 to ileng do intermediate[index] := 0;
  23.  
  24. readln(t, number);
  25. for index := 1 to length(number) do
  26. mul[length(number) + 1 - index] := ord(number[index]) - 48;
  27.  
  28. readln(t, number);
  29. SetLength(factor, length(number));
  30.  
  31. for index := 0 to length(number) - 1 do
  32. factor[length(number) - 1 - index] := ord(number[index + 1]) - 48;
  33.  
  34. k := 0;
  35. for index := 0 to length(number) - 1 do
  36. begin
  37. for mulindex := 1 to leng do
  38. begin
  39. intermediate[mulindex + k] += factor[index] * mul[mulindex];
  40. if intermediate[mulindex + k] >= 10 then
  41. begin
  42. intermediate[mulindex + k + 1] += intermediate[mulindex + k] div 10;
  43. intermediate[mulindex + k] := intermediate[mulindex + k] mod 10;
  44. end;
  45. end;
  46. inc(k);
  47. end;
  48.  
  49. close(t);
  50. assign(t, 'output.txt');
  51. rewrite(t);
  52.  
  53. now := false;
  54. for index := ileng downto 1 do
  55. begin
  56. if intermediate[index] <> 0 then now := true;
  57. if now then write(t, intermediate[index]);
  58. end;
  59.  
  60. if not now then write(t, '0');
  61. close(t);
  62. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement