[an error occurred while processing this directive]
|
Представим себе что
А*B = A+A+A+...+A B раз
и если D=(A*B)/С, то (A*B)-C-C-...-C D раз есть ноль (без учета остатка)
Теперь алгоритм:
D=0;
AB=0;
for(i=0; i AB += A;
if (AB >= C) {
AB -= C;
D++;
}
}
В конце имеем ответ в C и остаток в AB, понятно что если A, B и C по 31 биту, то 32 бит хватит...
E-mail: info@telesys.ru