[洛谷1618]三连击(升级版)
【题目描述 Description】
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出“No!!!”。
【输入输出格式 Input/output】
【输入格式】
三个数,A B C。
【输出格式】
若干行,每行3个数字。按照每行第一个数字升序排列。
【输出格式】
若干行,每行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.