Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Почему наиболее эффективным оказывается заполнение клеток именно по строкам, потом по слоям?
for(int i=1;i<N;i++){
for(int j=0;j<i;j++){
ulong a=A[i]|A[j];
A[i]&=A[j];
A[j]=a;
}
}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;
for(int i=1;i<N;i++)
for(int j=0;j<64;j++)
C[j] += (A[i] & Base2[j]) > 0;
void AddSum(ulong x){
for(int i=0;x!=0;i++,x>>=1)
if(x&1) C[i]++;
}
}
CII CCI FFJ FHH BBH
CIG CFD BHJ BJJ
KGG EDD EEA
KGD EAA
KKA
Собираем Mini Bedlam Cube