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:
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.