P146SUMF spoj PTIT – Dãy số kì diệu

Nguồn đề bài: http://www.spoj.com/PTIT/problems/P146SUMF/

1. Đề bài P146SUMF spoj

Cho trước một số nguyên không âm n, nhiệm vụ của bạn là tìm số nguyên k nhỏ nhất, sao cho dãy số n, 2n, 3n, …, kn có chứa đầy đủ các chữ số từ 0 đến 9.

Input

Gồm nhiều bộ test. Mỗi test gồm một số nguyên dương n trong phạm vi từ 1 tới 200 000 000.

Output

Với mỗi test, in ra trên một dòng số nguyên k thỏa mãn yêu cầu.

Example

Input:

1
10
123456789
3141592

Output:

1
10
123456789
3141592

10
9
3
5

2. Hướng dẫn P146SUMF spoj PTIT

– thực hiện sinh xâu k*n (k=1..+oo)

– duyệt kiểm tra có thỏa điều kiện đề bài hay không? nếu có thì xong bài toán. còn ko tiếp tục tăng k và kiểm tra

3. code tham khảo P146SUMF spoj PTIT

const   fi='';
type
        data=longint;
var
        f:text;
        N:data;
        DD:array[0..9] of boolean;
        sl:data;

function check:boolean;
begin
        exit(sl=10);
end;


procedure xuli;
var     i,j:data;
        tmp:string;
begin
        fillchar(dd,sizeof(dd),false);
        sl:=0;

        for i:=1 to 200000000 do
                begin
                        str(int64(i)*int64(n),tmp);
                        for j:=1 to length(tmp) do
                                if dd[ord(tmp[j])-48]=false then
                                        begin
                                                dd[ord(tmp[j])-48]:=true;
                                                inc(sl);
                                                if check then break;
                                        end;
                        if check then break;
                end;
        writeln(i);
end;

begin
        assign(f,fi); reset(f);
        while not seekeof(f) do
                begin
                        readln(f,n);
                        xuli;
                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 *