Автор Ализон задал вопрос в разделе Другие языки и технологии
Длинная арифметика и получил лучший ответ
Ответ от Ўрий-17[гуру]
Вот как интересно! Деление! Алгоритм деления использует умножение, с вычитанием, а умножение - сложение.. Более того, там ещё нужны операции сравнения. Ну если Вам надо только деление, вот целочисленное деление для положительных чисел с остатком:
string divp(string a,string b,string& ost)
{
int i,j;
string c,v,t,d,e;
if(ltp(a,b)) { c="0"; ost=a; return c; }
if(eq(a,b)) { c="1"; ost="0"; return c; }
for(i=0;i < b.size()-1;c+=a[i++]);
for(d="",v="1";;)
{c+=a[i++];
for(;c[0]=='0'&&c.size()>1;c.erase(j-1)) for(j=1;j < c.size();c[j-1]=c[j++]);
for(e="0",j=1;j<=9;j++)
{
e[0]=char(j+48);
t=mulp1(b,e);
if(!ltp(t,c)) if(!eq(t,c)) break;
}
e[0]=char(j+47);
d+=e[0];
t=mulp1(b,e);
c=subp(c,t);
if(i>=a.size()) break;
}
ost=c;
for(;d[0]=='0'&&d.size()>1;d.erase(i-1)) for(i=1;i < d.size();d[i-1]=d[i++]);
return d;
}
эта функция у меня используется для осуществления арифметического алгоритма сжатия данных.
Столбиком. И судя по всему, это не шутка.
Лёгким движением руки брюки превращаются...