1から10の数字から4回数字を選び出す。選び出した数字を掛け合わせたものと,選び出した残りの数字を足し合わせたものが等しくなった。選び出した数字を求める。
選び出した数字をa,b,c,dとする。aを選び出したときの残りの数字の和は55-aとなる。
よって以下の数式を満たす組合せを求める。
a*b*c*d = (55-a) + (55-b) + (55-c) + (55-d)
同じ数字を何回使っても良いので,以下の虱潰しコードになる。
for( int a=1; a<= 10; a++) { for( int b=1; b<= 10; b++) { for( int c=1; c<= 10; c++) { for( int d=1; d<= 10; d++) { int x = a * b * c * d; int y = (55-a) + (55-b) + (55-c) + (55-d); if( x == y) 発見 } } } }
重複除去の処理を入れず発見したのをそのまま出力するので,a,b,c,dの4つの数字を並び替えた4!(4の階乗)件(24件)出力される。
解速度
即