Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
#include
using namespace std; string multiply_two_numbers_as_string(string a, string b) { int len_a = a.size(); int len_b = b.size(); int mult[len_a + len_b + 1]; for(int i = 0; i < len_a + len_b + 1; i++) { mult[i] = 0; } int till_a = 0, till_b = 0; if(a[0] == '-') { till_a = 1; } if(b[0] == '-') { till_b = 1; } for(int i = len_a - 1; i >= till_a; i--) { for(int j = len_b - 1; j >= till_b; j--) { mult[i + j + 1] += (a[i] - '0') * (b[j] - '0'); } } for(int i = len_a + len_b - 1; i >= 0; i--) { if(mult[i] > 9) { mult[i - 1] += (mult[i] / 10); mult[i] %= 10; } } int i = 0; while(mult[i] == 0) { i++; } string product = ""; if(till_a != till_b) { product += "-"; } for(int j = i; j < len_a + len_b; j++) { product += (mult[j] + '0'); } return product; } bool is_A_smaller_than_B(string A, string B) { if(A.size() < B.size()) { return true; } if(A.size() > B.size()) { return false; } for(int i = 0; i < (int) A.size(); i++) { if(A[i] < B[i]) { return true; } if(A[i] > B[i]) { return false; } } return true; } string subtract_big_integer(string A, string B) { if(is_A_smaller_than_B(A, B)) { swap(A, B); } int sz_a = (int)A.size() - 1; int sz_b = (int)B.size() - 1; int carry = 0; string diff = ""; while(sz_a >= 0 and sz_b >= 0) { int digit_a = (A[sz_a] - '0'); int digit_b = (B[sz_b] - '0'); int razlika = digit_a - digit_b - carry; if(razlika < 0) { razlika += 10; carry = 1; } else { carry = 0; } diff += (razlika + '0'); sz_a--; sz_b--; } while(sz_a >= 0) { int digit_a = (A[sz_a] - '0'); int razlika = digit_a - carry; if(razlika < 0) { carry = 1; razlika += 10; } else { carry = 0; } diff += (razlika + '0'); } reverse(diff.begin(), diff.end()); int i = 0; string result = ""; while(diff[i] == '0') { i++; } for(int j = i; j < diff.size(); j++) { result += diff[j]; } return result; } string add_big_integer(string A, string B) { // funkcija koja ke ni sobere A + B if(A.size() < B.size()) { swap(A, B); } int a_i = (int) A.size() - 1; int b_i = (int) B.size() - 1; int carry = 0; string sum = ""; while(a_i >= 0 and b_i >= 0) { int digit_a = (A[a_i] - '0'); int digit_b = (B[b_i] - '0'); int zbir = digit_a + digit_b + carry; if(zbir <= 9) { sum += (zbir + '0'); carry = 0; } else { carry = 1; zbir -= 10; sum += (zbir + '0'); } a_i--; b_i--; } while(a_i >= 0) { int digit_a = (A[a_i] - '0'); int zbir = digit_a + carry; if(zbir <= 9) { sum += (zbir + '0'); carry = 0; } else { carry = 1; zbir -= 10; sum += (zbir + '0'); } a_i--; } if(carry == 1) { sum += "1"; } reverse(sum.begin(), sum.end()); return sum; } string divide_two_big_numbers_as_string(string a, string b) { if(is_A_smaller_than_B(a, b)) { swap(a, b); } string S = ""; for(int i = 0; i < b.size(); i++) { S += a[i]; } if(is_A_smaller_than_B(S, b)) { S += a[b.size()]; } string diff = S; string pati = "1"; while(!is_A_smaller_than_B(diff, b)) { if(!is_A_smaller_than_B(subtract_big_integer(diff, b), b)) { diff = subtract_big_integer(diff, b); pati = add_big_integer(pati, "1"); } else { break; } } string remainder = ""; string quotient = ""; quotient += pati; for(int i = (int) S.size(); i < (int) a.size(); i++) { remainder = subtract_big_integer(S, multiply_two_numbers_as_string(pati, b)); remainder += a[i]; diff = remainder; pati = "1"; while(!is_A_smaller_than_B(diff, b)) { if(!is_A_smaller_than_B(subtract_big_integer(diff, b), b)) { diff = subtract_big_integer(diff, b); pati = add_big_integer(pati, "1"); } else { break; } } quotient += pati; S = remainder; } return quotient; } int main() { string a, b; a = "32167"; b = "123"; cout << divide_two_big_numbers_as_string(a, b) << endl; return 0; }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)