4、找数

4、找数
由键盘输入正整数N(N≤500)和K(K≤9),请找一个正整数M,使N×M的值仅由0~K组成,而且0~K的每个数字至少出现一次。编程序在1~30000范围内找出符合条件的最小的M值,如果找不到,则输出“No find!”。
例:①输入:N,K=65,3
   输出:M=48      (因为65×48=3120)

  ②输入:N,K=125,8
   输出:No find!

program findm;
const   max = 30000;
var
     n, m, k, i, min, s : longint;
     NoFind : boolean;
     t : array[0 .. 9] of integer;
begin
     write('N, K = ');
     readln(n, k);
     min := 10;
     for i := 2 to k do
        min := min*10+i;
     NoFind := true;
     for m := (min div n) to max do
     begin
          s := m*n;
          while s > 0 do
          begin
               t[s mod 10] := t[s mod 10] + 1;
               s := s div 10;
          end;
          NoFind := false;
          for i := 0 to 9 do
                if ((i <= k) and (t[i] = 0)) or ((i > k) and (t[i] <> 0)) then
                begin
                     NoFind := true;
                     break;
                end;
          if NoFind then
                for i := 0 to 9 do
                      t[i] := 0
          else
                break;
     end;
     if Nofind then
          writeln('No find!')
     else
          writeln('M = ', m, '  N*M = ', n*m);
     readln;
end.
posted @ 2010-02-25 16:02  SmartIOI  阅读(253)  评论(0)    收藏  举报
本站采用CC授权如需转载、引用文章,请务必附上作者及来源处。 Creative Commons License