Вам не нужно помещать элементы в массивы и т. Д. Вы можете использовать побитовые операции и обновлять аккумуляторы, например:
public static long RussianPeasantMult(long a, long b) {
long sum = 0;
while(a != 0) {
if((a & 1) == 1) {
sum += b;
}
a >>>= 1;
b <<= 1;
}
return sum;
}
Таким образом, на каждой итерации мы проверяем, установлен ли последний бит, илине.Если он установлен, мы добавляем b
к сумме.Независимо от последнего бита мы сдвигаем a
на одну позицию вправо и b
на одну позицию влево.Мы можем остановиться с момента, когда a
равен нулю (и, таким образом, все установленные биты «сдвинуты»).