Integer long division: Difference between revisions

Content added Content deleted
(Added C++ solution)
m (Minor edit to C++ code)
Line 34: Line 34:
size_t digits = 0;
size_t digits = 0;
std::map<big_int, size_t> seen;
std::map<big_int, size_t> seen;
while (c > 0 && c < d) {
seen[c] = digits++;
result += '0';
c *= 10;
}
while (seen.count(c) == 0) {
while (seen.count(c) == 0) {
if (c == 0) {
if (c == 0) {
Line 46: Line 41:
}
}
seen[c] = digits++;
seen[c] = digits++;
result += big_int(c / d).get_str();
if (c < d) {
c = 10 * (c % d);
result += '0';
c *= 10;
} else {
result += big_int(c / d).get_str();
c = 10 * (c % d);
}
}
}
return {result, digits - seen[c]};
return {result, digits - seen[c]};