Pascal

Modified: Wednesday, 22-12-2021 07:00 AM

Số được tạo từ các chữ số 4 và 7 gọi là số may mắn.

Các số tạo thành bởi thứ tự sau: 4 7 44 47 77 444 ...

Đề: Tìm số may mắn thứ K


var n, dodai, dMax:int64;

function luythua(n:byte):int64;         // OK
begin
    if (n=1) then exit(2)
        else exit(luythua(n-1)*2);
end;
    
function tongluythua(n:byte):int64; //OK
begin
        exit(luythua(n+1)-2);
end;
    
function dodaichuoi(n : int64):byte; //OK
var dodai:byte;
    begin
    dodai := 1;
    while (tongluythua(dodai) < n) do 
    begin
        inc(dodai);
    end;
    exit(dodai); 
end;
// Main
begin
    write('Nhap vi tri so can tim: '); readln(n);
    
    dodai := dodaichuoi(n);
    n     := n-tongluythua(dodai-1); // vi tri trong doan
    while (dodai>=1) do 
    begin     
        dMax := tongluythua(dodai)-tongluythua(dodai-1); // do dai cua doan
        
        if (n>(dMax div 2)) then 
            begin
                write(7);
                n := n-(dMax div 2);
            end
        else 
            begin
                write(4);
            end;
                
            dec(dodai);
    end;
    readln;
end.