BÀI TẬP 54: LỘC PHÁT (TÌM SỐ ĐẸP THỨ K)

số đẹp; phát lộc

Theo quan niệm của khoa học huyền bí phương đông, số 6 được coi là LỘC, số 8 được coi là PHÁT. Nhiều người cố gắng sở hữu các số này để sử dụng trong số điện thoại hoặc biển số xe, … Số đẹp là số trong biểu diễn thập phân chỉ chứa hai chữ số trên. Dãy các số đẹp theo thứ tự là: 6, 8, 66,68,86,88, …

Yêu cầu: Tìm số đẹp thứ K

Dữ liệu vào: Cho từ tệp văn bản LOCPHAT.INP với một dòng duy nhất ghi số nguyên K (1 ≤ K≤ 109).

Kết quả: Ghi ra tệp LOCPHAT.OUT, một dòng duy nhất ghi số đẹp thứ K

 

Ví dụ:

LOCPHAT.INP

LOCPHAT.OUT

1

6

4

68

41

68686

102

866888

100046

8666688688668888

10000047

66886668668688686886666

44444035

6868668866686866886666866

555555044

66668666888686668866688866868

666666034

66888868888668666686666886688

777777045

68886686886888886888886686886

888888019

86866888886886868868688686866

999999000

88688866886868866688666688668

Hướng dẫn giải:

    - Đổi xâu nhị phân

        Ví dụ: N = 4   =  1002

-         Cộng xâu nhị phân cho 1, quy tắc 1 + 1 = 10 viết 0 nhớ dư =1; 1 + 0 = 1 viết 1 dư 0.

      Ví dụ: N = 4  = 1002 +1 = 1012

-         In ra: in từ 2 đến length (bỏ ký tự đầu)

+ Nếu = 0 ghi 6

+ Nếu = 1 ghi 8.

    CODE THAM KHẢO:

program Phat_Loc;

var A,B:array[1..1000] of 0..1;

   L, N,M:Qword;

   st,s:string;

   fi,fo:text;

   i:integer;

procedure Henhiphan(M:Qword);

begin

   L:=0;

   while (M>0) do //doi sang he nhi phan

   begin

      L:=L+1;

      A[L]:= M mod 2;

      M:=M Div 2;

   end;

end;

procedure inra(st:string);

var i:integer;

begin

  for i:=2 to length(st) do

  if St[i]='0' then write(fo,6)

  else write(fo,8);

  writeln;

end;

procedure xuly;

var i,du:integer;

begin

   du:=1;st:='';

   for i:= 1 to L do

   begin

     if(A[i]+du=1) then begin st:='1'+st; du:=0;end

     else

        if(A[i]+du=0) then begin st:='0'+st; du:=0;end

        else

           if(A[i]+du=2) then begin st:='0'+st; du:=1;end;

   end;

   if du<>0 then st:='0'+st;

   inra(st);

end;

begin

   clrscr;

     assign(fi,'phatloc.inp');reset(fi);

     assign(fo,'phatloc.out'); rewrite(fo);

     while not eof(fi) do

      begin

         readln(fi,N);

         //write(fo,N,':':2);

         henhiphan(N);

         xuly;

      end;

   close(fi); close(fo);

end.



Nhãn:

Đăng nhận xét

[blogger]

Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Được tạo bởi Blogger.
Javascript DisablePlease Enable Javascript To See All Widget