Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program HelloDcoder;
- function DecToTwo(n: Int64):string;
- var
- s, Temp: string;
- i: Integer;
- Chr: Char;
- begin
- s := '';
- repeat
- str(n mod 2, temp);
- s := s + temp;
- n := n div 2;
- until n = 0;
- for i := 1 to Length(s) div 2 do
- begin
- Chr := S[i];
- s[i] := s[Length(s) - i + 1];
- s[Length(s) - i + 1] := Chr;
- end;
- decToTwo := s;
- end;
- function TwoToDec(s: string): Integer;
- var
- n, i, Coeff: Integer;
- begin
- n := 0;
- Coeff := 1;
- for i := Length(s) downto 1 do
- begin
- n := n + Coeff * (ord(s[i]) - 48);
- Coeff := Coeff * 2;
- end;
- TwoToDec := n;
- end;
- var
- s, newS: string;
- i, j: Integer;
- n, ResultArr: array of Integer;
- Chr: Char;
- begin
- i := 1;
- repeat
- SetLength(n, i);
- Readln(n[i - 1]);
- Inc(i);
- until n[i - 2] = 0;
- SetLength(ResultArr, i - 2);
- i := 0;
- while i < Length(n) - 1 do
- begin
- s := DecToTwo(n[i]);
- j := Length(s);
- NewS := '';
- while s[j] <> '1' do
- begin
- NewS := NewS + s[j];
- Dec(j);
- end;
- NewS := NewS + '1';
- for j := 1 to Length(NewS) div 2 do
- begin
- Chr := NewS[j];
- NewS[j] := NewS[Length(NewS) - j + 1];
- NewS[Length(NewS) - j + 1] := Chr;
- end;
- ResultArr[i] := TwoToDec(NewS);
- Inc(i)
- end;
- for i := 0 to Length(ResultArr) - 1 do
- Writeln(ResultArr[i]);
- Readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement