[洛谷1618]三连击(升级版)

 
【题目描述 Description】
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出“No!!!”。 

输入输出格式 Input/output】

【输入格式】

三个数,A B C。
【输出格式】

若干行,每行3个数字。按照每行第一个数字升序排列。

【输入输出样例 Sample input/output】

样例测试点#1

输入样例: 
1 2 3

输出样例:

192 384 576
219 438 657
273 546 819
327 654 981

说明 description】
保证A<B<C

【思路】

  基本上和三连击一个思路,简单的爆搜,最差也是三重循环,时间复杂度(O(N^3))。

var s,s1,s2,s3,s4:string;
    i,j,k,h,x,y,z,c:longint;  
    a:array[1..9]of longint;  
    b:boolean;
begin  
  readln(x,y,z);c:=0;  
  for i:=123 to 987 do  
  begin  
    for h:=1 to 9 do a[h]:=0;
    b:=true;  
    j:=trunc(i/x*y);k:=trunc(i/x*z);  
    if(j<1000)and(k<1000)then  
    begin  
    str(i,s1);str(j,s2);str(k,s3);
    s:=concat(s1,s2,s3);  
    for h:=1 to 9 do   
    begin  
      str(h,s4);
      while pos(s4,s)<>0 do   
      begin  
        inc(a[h]);  
        delete(s,pos(s4,s),1);
      end;  
      if a[h]<>1 then  
      begin  
        b:=false;  
        break;
      end;  
    end;  
    if b=true then  
    begin
      writeln(i,' ',j,' ',k);
      inc(c);  
    end;
    end;  
  end;  
  if c=0 then writeln('No!!!');
end.

 

posted on 2015-08-07 15:33  川汉唐  阅读(439)  评论(0编辑  收藏  举报

导航