HSPC14L spoj – Bất lặp

Nguồn đề bài: http://vn.spoj.com/problems/HSPC14L/

1. Đề bài HSPC14L spoj

Số bất lặp là số mà trong đó mỗi chữ số {1,2,3, …, 9} xuất hiện tối đa một lần và không có số 0. Một số bất lặp có thể có nhiều nhất chín chữ số, nhưng cũng có thể có ít hơn. Ví dụ về số bất lặp: 9, 32, 489, 98761 và 983245.

Bạn có một số nguyên N có tối đa 9 chữ số. Nhiệm vụ của bạn là in ra số bất lặp nhỏ nhất lớn hơn N. Ví dụ, đối với 99 thì câu trả lời là 123, đối với 881 thì câu trả lời là 891, và đối với 133 thì câu trả lời là 134.

Input

Gồm nhiều test, mỗi test ghi trên một dòng gồm số nguyên N.

Output

Với mỗi test, in ra số cần tìm. Nếu không có, in ra 0.

Example

Input:
99

Output:
123

2. code tham khảo HSPC14L spoj

const   fi='';
type    data=longint;
var
        dd:array[1..9] of boolean;
        kq:array[1..9] of data;
        n,k:data;
        f:text;
        s,stam:string;
        OK:boolean;


procedure try(i:data);
var     j:data;
begin
        if i>n then
                begin
                        if (s<stam) then
                                begin
                                        ok:=false;
                                        writeln(stam);
                                end;
                end
        else
        for j:=1 to 9 do
                if (not dd[j]) and OK then
                        begin
                                dd[j]:=true;
                                stam:=stam+chr(j+48);
                                try(i+1);
                                delete(stam,length(stam),1);
                                dd[j]:=false;
                        end

end;


procedure xuli(z:data);
begin
        ok:=true;
        str(k,s);
        fillchar(dd,sizeof(dd),false);
        stam:='';
        n:=z;
        while length(s)<n do
                s:='0'+s;
        try(1);
end;


begin
        assign(f,fi); reset(f);
        while not eof(f) do
        begin



        readln(f,k);
        case k of
        0..             9:           xuli(1);
        10..            98:          xuli(2);
        99..            987:         xuli(3);
        988..           9876:        xuli(4);
        9877..          98765:       xuli(5);
        98766..         987654:      xuli(6);
        987655..        9876543:     xuli(7);
        9876544..       98765432:    xuli(8);
        98765433..      987654320:   xuli(9);
        else
                writeln(0);
        end;

        end;
        close(f);
end.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *