Да если бы вы знали, как это тяжело — синдром Аспергера…
Как я завидую своим брату и сестре — как это здорово быть простым нормальным человеком, иметь кучу друзей и интересов, не испытывать больших проблем с ленью, не пытаться скачать весь топ250 IMDB в HD качестве! Пусть зарплата будет меньше, зато ты можешь смотреть в глаза другому человеку не испытывая дискомфорта и сможешь понять этого человека без слов! И никто не будет считать тебя грубым без причины!
Ничего и недолго, специально проверил в Delphi 7 у меня ушло меньше секунды:
var
B: array [1..64] of UInt64 = (
$1, $2, $4, $8,
$10, $20, $40, $80,
$100, $200, $400, $800,
$1000, $2000, $4000, $8000,
$10000, $20000, $40000, $80000,
$100000, $200000, $400000, $800000,
$1000000, $2000000, $4000000, $8000000,
$10000000, $20000000, $40000000, $80000000,
$100000000, $200000000, $400000000, $800000000,
$1000000000, $2000000000, $4000000000, $8000000000,
$10000000000, $20000000000, $40000000000, $80000000000,
$100000000000, $200000000000, $400000000000, $800000000000,
$1000000000000, $2000000000000, $4000000000000, $8000000000000,
$10000000000000, $20000000000000, $40000000000000, $80000000000000,
$100000000000000, $200000000000000, $400000000000000, $800000000000000,
$1000000000000000,$2000000000000000,$4000000000000000,$7999999999999999 + 1
);
C: array [1..64] of Integer = (
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
);
procedure TForm1.Button1Click(Sender: TObject);
const
N = 10000;
var
i, j: Integer;
A: array [1..N] of UInt64;
begin
Randomize;
for i := 1 to N do
A[i] := UInt64((Random(MaxInt) + 1)) * UInt64((Random(MaxInt) + 1));
for i := 1 to N do
for j := 1 to 64 do
if (A[i] and Base2[j]) <> 0 then
C[j] := C[j] + 1;
for j := 1 to 64 do
Memo1.Lines.Add(IntToStr(C[J]));
end;
Там где я извращался — это из-за глюков среды — не обращайте внимания.
Для вас здесь представляет интерес работа с битами в строке if (A[i] and Base2[j]) <> 0 then
Удачи!
По первому вопросу я бы сделал так:
массив из 64 чисел-сумматоров, пробегаемся по всем числам суммируя поднятые биты в соответствующий сумматор, и в конце просто пробегаемся по массиву, выявляю наибольший элемент.
Как то так.
Аналогичная история!
Намного интереснее было прочитать еще одну увлекательную историю-рассказ-повесть-роман,
так как не понимал и до сих пор не понимаю, что интересного в том чтоб шататься по дворам или играть в войнушки на заброшенной стройке. Ладно один-два раза, но не каждый же день.
Правда в ней строка Стоимость будет в обеих столбцах содержать Бесплатно :)
Как я завидую своим брату и сестре — как это здорово быть простым нормальным человеком, иметь кучу друзей и интересов, не испытывать больших проблем с ленью, не пытаться скачать весь топ250 IMDB в HD качестве! Пусть зарплата будет меньше, зато ты можешь смотреть в глаза другому человеку не испытывая дискомфорта и сможешь понять этого человека без слов! И никто не будет считать тебя грубым без причины!
B = Base2
Простите, опечатался.
Там где я извращался — это из-за глюков среды — не обращайте внимания.
Для вас здесь представляет интерес работа с битами в строке if (A[i] and Base2[j]) <> 0 then
Удачи!
массив из 64 чисел-сумматоров, пробегаемся по всем числам суммируя поднятые биты в соответствующий сумматор, и в конце просто пробегаемся по массиву, выявляю наибольший элемент.
Как то так.
На будущее, по таким проблемам пишите в личку автора.
А официальный хостинг хабра таки хабрасторадж.орг
Намного интереснее было прочитать еще одну увлекательную историю-рассказ-повесть-роман,
так как не понимал и до сих пор не понимаю, что интересного в том чтоб шататься по дворам или играть в войнушки на заброшенной стройке. Ладно один-два раза, но не каждый же день.