將1,2,…,9共9個數分成三組,分別組成三個三位數,且使這三個三位數的比例是a:b:c,試求出所有滿足條件的三個三位數,若無解,輸出「no!!!」。
//感謝黃小u飲品完善題意輸入格式:三個數,a b c。
輸出格式:若干行,每行3個數字。按照每行第乙個數字公升序排列。
輸入樣例#1:
1 2 3輸出樣例#1:
192 384 576保證a219 438 657
273 546 819
327 654 981
默默打表,多重判斷,因為資料就這麼弱
var a,b,c,i,j,k,t:longint;
n:array[0..100000]of longint;
f:array[1..9]of boolean;
p:boolean;
function exi(a,b,c:longint):boolean;
var i:longint;s1,s2,s3:string;
begin
str(a,s1);
str(b,s2);
str(c,s3);
for i:=1 to 3 do
begin
if pos(s1[i],s2)>0 then exit(false);
if pos(s2[i],s1)>0 then exit(false);
if pos(s1[i],s3)>0 then exit(false);
if pos(s3[i],s1)>0 then exit(false);
if pos(s2[i],s3)>0 then exit(false);
if pos(s3[i],s2)>0 then exit(false);
end;
exi:=true;
end;
begin
fillchar(f,sizeof(f),true);
p:=false;
for i:=1 to 9 do
begin
f[i]:=false;
for j:=1 to 9 do
if f[j] then
begin
f[j]:=false;
for k:=1 to 9 do
if f[k] then
begin
inc(t);
n[t]:=i*100+j*10+k;
end;
f[j]:=true;
end;
f[i]:=true;
end;
readln(a,b,c);
for i:=1 to t-2 do
for j:=i+1 to t-1 do
for k:=i+2 to t do
if (a*n[j]=b*n[i])and(a*n[k]=c*n[i])and(b*n[k]=c*n[j])and exi(n[i],n[j],n[k])
then
begin
p:=true;
writeln(n[i],' ',n[j],' ',n[k]);
end;
if not(p) then
writeln('no!!!');
end.
洛谷 三連擊問題
以下 來自洛谷題解。然後我加了一點自己理解的解釋。沒有別的意思,只是想把我覺得好的 記下來 本題為提交答案題,您可以寫程式或手算在本機上算出答案後,直接提交答案文字,也可提交答案生成程式。將1,2,91,2,cdots 91,2,9共999個數分成333組,分別組成333個三位數,且使這333個三位...
洛谷Luogu P1008 三連擊題解
題目描述 將1,2,9共9個數分成3組,分別組成3個三位數,且使這3個三位數構成1 2 3的比例,試求出所有滿足條件的3個三位數。輸出格式 若干行,每行333個數字。按照每行第111個數字公升序排列。解題思路 看到網上有很多的解法,這題本身也沒有什麼技術含量,大多用暴力迴圈或者深搜就行,甚至直接打表...
洛谷 P1618 三連擊(公升級版)
題目描述 將1,2,9共9個數分成三組,分別組成三個三位數,且使這三個三位數的比例是a b c,試求出所有滿足條件的三個三位數,若無解,輸出 no 輸入輸出格式 輸入格式 三個數,a b c。輸出格式 若干行,每行3個數字。按照每行第乙個數字公升序排列。輸入輸出樣例 輸入樣例 1 1 2 3 輸出樣...