Nguồn đề bài: http://www.spoj.com/PTIT/problems/PTIT124J/
1. Đề bài PTIT124J spoj
Cho một số ở hệ nhị phân, chuyển số đó sang hệ bát phân
Input
Một số duy nhất ở hệ nhị phân (không quá 100 chữ số, chữ số đầu tiên luôn là 1)
Output
Số sau khi chuyển sang hệ bát phân.
Example
Input:
1010
Output:
12
Input:
11001100
Output:
314
Điều hiển nhiên, kết quả khi chuyển từ hệ nhị phân sang hệ bát phân như sau:
000 –> 0
001 –> 1
010 –> 2
011 –> 3
100 –> 4
101 –> 5
110 –> 6
111 –> 7
từ đó ta chuyển về bài toán thay thế xâu là được
2. code mẫu PTIT124J spoj
const fi='';
nmax=102;
type data=longint;
var
f:text;
S:ansistring;
function doi(s:string):data;
begin
case s of
'000': exit(0);
'001': exit(1);
'010': exit(2);
'011': exit(3);
'100': exit(4);
'101': exit(5);
'110': exit(6);
'111': exit(7);
end;
end;
procedure xuli;
var i,j:data;
begin
while length(s) mod 3 <>0 do
s:='0'+s;
while length(s)<>0 do
begin
write(doi(copy(s,1,3)));
delete(s,1,3);
end;
end;
begin
assign(f,fi); reset(f);
readln(f,s);
close(f);
xuli;
end.
keywords: chuyển hệ nhị phân sang bát phân pascal. chuyển đổi hệ cơ số 2 sang 8