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.