Số đảo ngược
Cho số nguyên A biểu diễn trong hệ thập phân có dạng a 1 a 2 …a N-1 a N . Ta gọi số nguyên A* mà
biểu diễn trong hệ thập phân có dạng a N a N-1 …a 2 a 1 (Có đúng N chữ số có nghĩa) là số đảo ngược
của A. Ta có thể định nghĩa tương tự như trên đối với số đảo ngược của một số trong hệ nhị phân.
Yêu cầu: Cho trước số nguyên dương K. Hãy tìm số lượng các số nguyên không âm A thoả mãn
A ≤ K và biểu diễn trong hệ nhị phân của A và A* là hai số đảo ngược của nhau.
Dữ liệu vào từ file văn bản: ‘daonguoc.INP’
Số K (K≤1000)
Dữ liệu ra ghi ra file văn bản: ‘daonguoc.OUT’
Số S là số lượng các số tìm được.
Ví dụ:
daonguoc.INP daonguoc.OUT
7 5
(Giải thích: Với K = 7 Ta tìm được 5 số, đó là các số: 0, 1, 3, 5, 7)
Var k,i,t:longint;
Function kt(n:longint):boolean;
Var s,x:string;
d,m,j:longint;
Begin
s:=''
x:=''
j:=0;
d:=0;
While n<>0 do
Begin
d:=n mod 2;
n:=n div 2;
Str(d,s);
x:=x+s;
j:=length(x)
end;
s:=x;
For m:=1 to j do
x[m]:=x[j-m+1];
If s=x then Exit(True) else Exit(False);
end;
Begin
{$ifndef online_JUDGE}
Assign(input,'standard.inp');
Reset(input);
Assign(output,'standard.out');
Rewrite(output);
{$endif}
Read(k);
For i:=1 to k+1 do
Begin
If kt(i-1) then inc(t);
end;
Write(t);
end.