6,4,9,1,3の5つの数字を使って以下の式を完成する。=の左側,右側でそれぞれ1つずつの数字を使うこと。
□□□×□□7=□□□□□
そういえば今日は13日の金曜日。
別にどうってことはないけどね。ただそれだけ。
何故1,3,4,6,9でないのかと思ったら,6,4,9,1,3で虫食い算ということだ。
前週に続き今回も数字の割り当て問題を利用可能。数字の数は5種類しかないので,a〜eまでを取り出して使用する。
for( int a=0; a< 5; a++) { used[a] = YES; for( int b=0; b< 5; b++) { if( used[b]) continue; used[b] = YES; for( int c=0; c< 5; c++) { if( used[c]) continue; used[c] = YES; for( int d=0; d< 5; d++) { if( used[d]) continue; used[d] = YES; for( int e=0; e< 5; e++) { if( used[e]) continue; // ここで式が成立するかどうか調べる。 } used[d] = NO; } used[c] = NO; } used[b] = NO; } used[a] = NO; }
ファイルの頭で以下のように配列を定義しておく。
int num[] = { 6, 4, 9, 1, 3};
こうすれば式の左は以下のように計算できる。
int n = (num[a] * 100 + num[b] * 10 + num[c]) * (num[d] * 100 + num[e] * 10 + 7);
この計算結果が6,4,9,1,3を1つずつ使っていることを確認する関数を作れば完成。
答えは1件出力されました。
解速度
即