您的位置:首页 > 其它

P1618 三连击(升级版)

2017-02-14 16:44 253 查看


P1618 三连击(升级版)


题目描述

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

//感谢黄小U饮品完善题意


输入输出格式

输入格式:

三个数,A B C。

输出格式:

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


输入输出样例

输入样例#1:
1 2 3


输出样例#1:
192 384 576
219 438 657
273 546 819
327 654 981









说明

保证A<B<C

var

x:array[0..9]
of longint;

a,b,c,i,aa,bb,cc,j:longint;

ji,ji2:boolean;

procedure
try(n:longint);//拆分并统计每个数字的使用次数

begin

while
n<>0
do

begin

x[n mod
10]:=x[n
mod 10]+1;

n:=n div
10;

end;

end;

begin

readln(a,b,c);

ji2:=false;

for
i:=1
to 999
do

begin

ji:=true;

for
j:=0
to 9
do//重置

x[j]:=0;

aa:=a*i;//按a:b:c来计算

bb:=b*i;

cc:=c*i;

try(aa);

try(bb);

try(cc);

for
j:=1
to 9
do//判断数字是否有重复

if
x[j]<>1
then ji:=false;

if
ji then

 
begin

if
(aa<=999)
and
(bb<=999)
and (cc<=999)then
writeln(aa,' ',bb,' ',cc);//确保是三位数

ji2:=true;//有解

end;

end;

if
ji2=false
then writeln('No!!!');//无解输出“NO!!!”

end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: