50 lines
804 B
ObjectPascal
50 lines
804 B
ObjectPascal
program pcntTest;
|
|
uses
|
|
sysutils,popCount;
|
|
|
|
function Odious(n:Uint32):boolean;inline;
|
|
Begin
|
|
Odious := boolean(PopCnt(n) AND 1)
|
|
end;
|
|
|
|
function EvilNumber(n:Uint32):boolean;inline;
|
|
begin
|
|
EvilNumber := boolean(NOT(PopCnt(n)) AND 1);
|
|
end;
|
|
|
|
var
|
|
s : String;
|
|
i : Uint64;
|
|
k : LongWord;
|
|
Begin
|
|
s :='PopCnt 3^i :';
|
|
i:= 1;
|
|
For k := 1 to 30 do
|
|
Begin
|
|
s := s+InttoStr(PopCnt(i)) +' ';
|
|
i := 3*i;
|
|
end;
|
|
writeln(s);writeln;
|
|
|
|
s:='Evil numbers :';i := 0;k := 0;
|
|
repeat
|
|
IF EvilNumber(i) then
|
|
Begin
|
|
inc(k);s := s+InttoStr(i) +' ';
|
|
end;
|
|
inc(i);
|
|
until k = 30;
|
|
writeln(s);writeln;s:='';
|
|
|
|
|
|
s:='Odious numbers :';i := 0;k := 0;
|
|
repeat
|
|
IF Odious(i) then
|
|
Begin
|
|
inc(k);s := s+InttoStr(i) +' ';
|
|
end;
|
|
inc(i);
|
|
until k = 30;
|
|
writeln(s);
|
|
end.
|