Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- string add(string a, string b) { // take reversed, output reversed
- n = a.size
- m = b.size
- string ans(max(n, m))
- bool carry = false;
- for i = 0; i < min(n, m); i += 1 {
- ans[i] = (a[i] + b[i] + carry) % 10
- carry = (a[i] + b[i] + carry) >= 10
- }
- for i = min(n, m); i < n; i += 1 {
- ans[i] = a[i] + carry
- carry = false
- }
- for i = min(n, m); i < m; i += 1 {
- ans[i] = b[i] + carry
- carry = false
- }
- if (carry)
- ans = ans + '1'
- return ans
- }
- string mul_digit(string a, string digit) { // take reversed, output reversed
- n = a.size
- string ans(n)
- int carry = 0
- for i = 0; i < n; i += 1 {
- ans[i] = (a[i] * digit + carry) % 10
- carry = (a[i] * digit + carry) / 10
- }
- if carry != 0 {
- ans = ans + carry
- }
- return ans
- }
- string mul(string a, string b) { // take reversed, output reversed
- n = a.size
- m = b.size
- string ans = "0"
- for i = 0; i < n; i += 1 {
- string c = mul_digit(a, b[i])
- ans = add(ans, ('0'*i) + c)
- }
- return ans
- }
- string main(string a, string b) {
- reverse(a)
- reverse(b)
- return reverse(mul(a, b))
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement