Advertisement
Gosunov

Untitled

Mar 7th, 2023
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. string add(string a, string b) { // take reversed, output reversed
  2. n = a.size
  3. m = b.size
  4. string ans(max(n, m))
  5.  
  6. bool carry = false;
  7. for i = 0; i < min(n, m); i += 1 {
  8. ans[i] = (a[i] + b[i] + carry) % 10
  9. carry = (a[i] + b[i] + carry) >= 10
  10. }
  11. for i = min(n, m); i < n; i += 1 {
  12. ans[i] = a[i] + carry
  13. carry = false
  14. }
  15. for i = min(n, m); i < m; i += 1 {
  16. ans[i] = b[i] + carry
  17. carry = false
  18. }
  19. if (carry)
  20. ans = ans + '1'
  21. return ans
  22. }
  23.  
  24. string mul_digit(string a, string digit) { // take reversed, output reversed
  25. n = a.size
  26. string ans(n)
  27. int carry = 0
  28. for i = 0; i < n; i += 1 {
  29. ans[i] = (a[i] * digit + carry) % 10
  30. carry = (a[i] * digit + carry) / 10
  31. }
  32. if carry != 0 {
  33. ans = ans + carry
  34. }
  35. return ans
  36. }
  37.  
  38. string mul(string a, string b) { // take reversed, output reversed
  39. n = a.size
  40. m = b.size
  41. string ans = "0"
  42. for i = 0; i < n; i += 1 {
  43. string c = mul_digit(a, b[i])
  44. ans = add(ans, ('0'*i) + c)
  45. }
  46. return ans
  47. }
  48.  
  49. string main(string a, string b) {
  50. reverse(a)
  51. reverse(b)
  52. return reverse(mul(a, b))
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement