Ok, evo kod koji sam našao u C-u (mene zanima u C++):
Code:
#include <stdio.h>
#include <stdlib.h>
int n1 [105], n2 [105], ans [210];
void
mult (void);
int
main (void)
{
char s [300];
int i, j, f;
while (fgets (s, 300, stdin)) {
for (i = 0 ; i < 105; i++) {
n1 [i] = n2 [i] = ans [i] = 0;
ans [2 * i] = 0;
ans [2 * i + 1] = 0;
}
j = 104;
for (i = strlen (s) - 2; i >= 0; i--) {
n1 [j--] = s [i] - '0';
}
/*printf ("%d%d%d\n", n1 [102], n1 [103], n1 [104]);
*/
fgets (s, 300, stdin);
j = 104;
for (i = strlen (s) - 2; i >= 0; i--) {
n2 [j--] = s [i] - '0';
}
/*printf ("%d%d%d\n", n2 [102], n2 [103], n2 [104]);
*/
mult ();
f = 0;
for (i = 0; i <= 209; i++) {
if (!f && ans [i] != 0)
f = 1;
if (f)
printf ("%d", ans [i]);
}
printf ("\n");
}
return 0;
}
void
mult (void)
{
int i, j, start, k, c;
int o, d;
start = 209;
for (i = 104; i >= 0; i--) {
k = start;
for (j = 104; j >= 0; j--) {
ans [k--] += (n1 [i] * n2 [j]);
}
start--;
}
c = 0;
for (i = 209; i >= 0; i--) {
o = (ans [i] + c) % 10;
d = (ans [i] + c) / 10;
ans [i] = o;
c = d;
}
}
Koliko vidim iz f-je mult uzimaju se zadnje cifre iz oba broja pa se one množe pa sve ide unazad. Takođe vidim da se manipuliše ostatkom dijeljenja koje se prikazuje kao konačni rezultat (čini mi se).
Nije mi baš jasno šta se dešava u f-ji main.
Ukoliko ovo ne može biti sažetije, pa samim tim i lakše za shvatiti onda bi mi svako pojašnjenje ovog sourcea dobro došlo.
Hvala.
When you think everithing happens to you is so bad ....
remember that always could be even worse.