WOO logo

Wizardに尋ねる #357

1 から 9 までの各数字をそれぞれ 1 回ずつ使用して、分子に 1 桁、分母に 2 桁の分数を 3 つ作成します。3 つの分数の和は 1 になります。

たとえば、8/16 + 9/27 + 3/24 は、合計が 1 ではなく 23/24 になることを除いて、すべての条件を満たします。

Gialmere

5/34 + 7/68 + 9/12

答えを見つけるには、permut(9,3)*permut(6,3)*permut(3,3)/fact(3) = 60,480通りの可能な順列を並べる必要があります。少なくとも1時間は試行錯誤しましたが、解は見つかりませんでした。

そこで、9桁の数字をfact(9) = 362,880通りの並び替え方法すべてを試すプログラムを書き、すべてテストしました。難しいのは、9桁の数字をあらゆる順序で並べる方法をすべて試すことでした。ここでは、辞書式ソートを使ってその方法を説明します。

  1. 9 つの要素すべてを、最小から最大の順に配列します。
  2. 配列内の最後の要素のうち、次の要素よりも大きい要素を探します。見つからない場合は、プログラムを終了します。
  3. 手順 2 の次の要素から始めて、手順 2 よりも大きい配列の最後の要素を検索します。
  4. 手順 2 と 3 の配列内の要素を交換します。
  5. 手順 2 の次の配列の要素を最後まで逆にします。
  6. ステップ2に戻る

このプロセスに従うと、3 つの分数を順序付ける 6 つの方法すべてに対して 1 回ずつ、合計 6 回、正しい答えが見つかります。

[spoiler=コード]

私は、1 から 9 までのすべての数字を辞書式順序で並べ替え、それぞれが解であるかどうかをテストする次のコードを作成しました。


void three_fraction(void)
{
 int i、x_max、y_max、temp_array[100]、hold、pt;
 int lex_array[] = { 1,2,3,4,5,6,7,8,9 };
 int num_elements = sizeof(lex_array) / sizeof(lex_array[0]);
 整数カウント = 0;
 ブール停止 = false;
 ダブルtot3;
 cerr << "要素数 =\t" << num_elements << "\n";
 する
 {
  カウント++;
  tot3 = (double)lex_array[0] / (double)(10 * lex_array[1] + lex_array[2]);
  tot3 += (double)lex_array[3] / (double)(10 * lex_array[4] + lex_array[5]);
  tot3 += (double)lex_array[6] / (double)(10 * lex_array[7] + lex_array[8]); 
  tot3 == 1.0の場合
  {
   cerr << count << "\t";
   cerr << lex_array[0] << "/" << lex_array[1] << lex_array[2] << " + ";
   cerr << lex_array[3] << "/" << lex_array[4] << lex_array[5] << " + ";
   cerr << lex_array[6] << "/" << lex_array[7] << lex_array[8] << "\n";
  } 
  x_max = -1;
  (i = 0; i < (要素数 - 1); i++) の場合
  {
   (lex_array[i] < lex_array[i + 1]) の場合
    x_max = i;
  }
  (x_max >= 0)の場合
  {
   y_max = 0;
   (i = x_max + 1; i < num_elements; i++) の場合
   {
    lex_array[x_max] < lex_array[i] の場合
     y_max = i;
   }
   ホールド = lex_array[x_max];
   lex_array[x_max] = lex_array[y_max];
   lex_array[y_max] = 保持;
   if (x_max + 1 < num_elements - 1) // 逆順
   {
    (i = x_max + 1; i < num_elements; i++) の場合
    {
     temp_array[i] = lex_array[i];
    }
    pt = 0;
    (i = x_max + 1; i < num_elements; i++) の場合
    {
     lex_array[i] = temp_array[要素数 - 1 - pt];
     pt++;
    }
   }
  }
  それ以外
   停止 = true;
 } while (stop == false);
}
[/ネタバレ]

この質問は、Wizard of Vegasの私のフォーラムで尋ねられ、議論されています。

ある男が10ガロンのワイン樽と水差しを持っていました。ある日、彼は水差し一杯のワインを汲み上げ、樽に水を注ぎました。その後、ワインと水が完全に混ざり合ったところで、彼はもう一杯の水差しを汲み上げ、再び樽に水を注ぎました。すると、樽にはワインと水が同量ずつ入っていました。

水差しの容量はどれくらいでしたか?

Gialmere

10-5*sqrt(2) =~ 2.9289ガロン

[spoiler=解決策]

j を水差しの容積とします。

最初に水差しにワインを注ぎ込んだ後、水差しには10-jガロンのワインが残っていました。ワインを水に置き換えた後、樽全体に対するワインの比率は(10-j)/10でした。

ジョッキが薄めたワインをすくい取った後、樽の中には10ガロン(約4.7リットル)の薄めたワインが残っていました。薄めたワインに含まれる純ワインの量は、次のように表すことができます。

(10-j)*((10-j)/10) = 5

(10-j)^2 = 50

j^2 - 20j + 100 = 50

j^2 - 20j + 50 = 0

j = (20 +/- 平方根(400-200))/2

j = (20 +/- 10*sqrt(2))/2

j = 10 +/- 5*sqrt(2)

水差しは樽より大きくすることはできないので、負の符号を使用する必要があります。

j = 10 - 5*sqrt(2) =~ 約 2.92893218813452 ガロン。

[/ネタバレ]

この質問は、Wizard of Vegasの私のフォーラムで尋ねられ、議論されています。

6面サイコロを何度も振り、出た目の合計が13以上になるまで繰り返します。最終的な合計の平均値、中央値、最頻値はいくらですか?

Gialmere

平均 = 14.690219
中央値 = 14
モード = 13

[spoiler=解決策]

この問題はマルコフ連鎖を使う必要がありました。次の表は、左の列の累積合計に応じて、それぞれの最終合計の確率を示しています。まず、合計が13から18の明らかなケースから始めましょう。次に、累積合計が0から12の場合は、下の6つのセルの平均を取ります。

初期状態の確率は、合計が 0 の最初の行にあります。

マルコフ連鎖

ロールの合計13 14 15 16 17 18
0 0.279263 0.236996 0.192313 0.145585 0.097371 0.048472
1 0.290830 0.230791 0.188524 0.143842 0.097114 0.048899
2 0.293393 0.241931 0.181893 0.139625 0.094943 0.048215
3 0.289288 0.245178 0.193717 0.133678 0.091410 0.046728
4 0.280369 0.242560 0.198450 0.146988 0.086950 0.044682
5 0.268094 0.235687 0.197878 0.153768 0.102306 0.042267
6 0.253604 0.225827 0.193419 0.155611 0.111500 0.060039
7 0.360232 0.193566 0.165788 0.133380 0.095572 0.051462
8 0.308771 0.308771 0.142104 0.114326 0.081919 0.044110
9 0.264660 0.264660 0.264660 0.097994 0.070216 0.037809
10 0.226852 0.226852 0.226852 0.226852 0.060185 0.032407
11 0.194444 0.194444 0.194444 0.194444 0.194444 0.027778
12 0.166667 0.166667 0.166667 0.166667 0.166667 0.166667
13 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000
15 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000
16 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000
17 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000
18 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000
[/ネタバレ]

この質問は私のフォーラム「Wizard of Vegas」で尋ねられ、議論されています。