いちごみるく |
※・・・本当は10本で十分なのですが、予算がおりたので使っちゃえ、ということで.....
6本ですよね? 6C2*16C2-(4+3+2+1)*2で |
5月30日(木) 0:08:38
40594 |
だいすけ |
iPadのSafariからは解答用紙使えないんですね・・・
何回送ってもエラーになるので、急いでパソコン立ち上げて送りました(汗 最短ルート15、に、余計な道120、をかけて、1800。 ただし、だぶってるのが20。(正方形ができる場合。) 1800-20=1780 |
5月30日(木) 0:08:56
40595 |
きょろ文 |
120*15=1800
重複が正方形をできる場合を考えて (1+4+2+3)*2 = 20 1780 |
5月30日(木) 0:12:21
40596 |
Mr.ダンディ |
苦戦の末、他の方と同様
(6C2)*(16C2)−20=1780 という式となりました。 |
5月30日(木) 0:58:19
40597 |
鼈甲 |
22-6=14と間違えてからというもの… |
5月30日(木) 1:22:27
40598 |
あめい |
8本のとり方はひとつの最短コースあたり、残り16本から2本選ぶので120通り×15=1800通り。ここで最短コースで曲がり角の数は、1,2,3,4の4パターンあり、2本道を加えると角ひとつにつき1つの別最短ルートができるので角1(2通り)角2(4通り)角3(6通り)角4(3通り)で1×2+2×4+3×6+4×3=40通りが重複するので、半分の20通りを引き1780通りになりました。みなさんのようにひとつの式にまとめて考える方法がいつもできず、場合分けになってしまいます。 |
5月30日(木) 9:25:38
40599 |
uchinyan |
はい,こんにちは。さて,今回の問題は...
う〜む,分かってしまえば「なぁ〜んだ,そんなことか。」という感じなのですが,結構苦労しました (^^; 結局,こんな感じ。 最短経路にさらに修復する道路を 2 本追加する,という方針で考えます。 最短経路は 6C2 = 15 通り。 この各々の場合に残りの 2 本の道路を追加するので,それぞれの最短経路に対して 16C2 = 120 通りずつで, 合計 120 * 15 = 1800 通り。 しかし,このうち,異なる最短経路の曲がる箇所が最小格子の正方形の相対する頂点二つになるのに対して 1 通りずつ重複があるので, 曲がる箇所の総数, 1 * 2 + 2 * 4 + 3 * 6 + 4 * 3 = 40 箇所 の半分 20 通りを引いて, 1800 - 20 = 1780 通り になります。 |
ネコの住む家
5月31日(金) 10:58:36
40600 |
uchinyan |
掲示板を読みました。
今回は皆さん同じ解法のようですね。 |
ネコの住む家
5月30日(木) 13:26:59
MAIL:uchi@sco.bekkoame.ne.jp 40601 |
次郎長 |
私は1800まではすぐに分かりましたが、その後、いくら重複しているのかが、皆さんのようにすっきりと理解できず、その後ずいぶん時間がかかりました。
明日は京都の散策。しとしと雨を期待していましたが、晴れて暑くなりそうで・・うまく行かないものです。 |
5月30日(木) 22:46:38
40602 |
たけちゃん |
引き算する20は,正方形部分を「斜め移動」と考えて,
縦3つ横1つ斜め1つの順列で,5!/3! ともできますね. |
5月31日(金) 17:35:08
40603 |
??? |
ベタなヤツを作ってしまいました。
10本ではなく、6本では? Option Explicit '.o-21-o-22-o '.|....|....| '18...19...20 '.|....|....| '.o-16-o-17-o '.|....|....| '13...14...15 '.|....|....| '.o-11-o-12-o '.|....|....| '.8....9...10 '.|....|....| '.o--6-o--7-o '.|....|....| '.3....4....5 '.|....|....| '.o--1-o--2-o Dim a(8) As Integer Sub Macro1() Cells(1, 1).Value = 0 Call saiki(1) End Sub Sub saiki(ByVal n As Integer) Dim j As Integer If n = 1 Then a(1) = 1 Else a(n) = a(n - 1) + 1 End If While a(n) <= 22 If n < 8 Then Call saiki(n + 1) ElseIf check(1) Then Cells(1, 1).Value = Cells(1, 1).Value + 1 For j = 1 To 8 Cells(Cells(1, 1).Value, j + 1).Value = a(j) Next j End If a(n) = a(n) + 1 Wend End Sub Private Function check(ByVal x As Integer) As Integer Dim b(22) As Integer Dim j As Integer check = 0 For j = 1 To 22 b(j) = 0 Next j For j = 1 To 8 b(a(j)) = 1 Next j If b(1) + b(2) + b(5) + b(10) + b(15) + b(20) = 6 Then check = 1 ElseIf b(1) + b(4) + b(7) + b(10) + b(15) + b(20) = 6 Then check = 1 ElseIf b(1) + b(4) + b(9) + b(12) + b(15) + b(20) = 6 Then check = 1 ElseIf b(1) + b(4) + b(9) + b(14) + b(17) + b(20) = 6 Then check = 1 ElseIf b(1) + b(4) + b(9) + b(14) + b(19) + b(22) = 6 Then check = 1 ElseIf b(3) + b(6) + b(7) + b(10) + b(15) + b(20) = 6 Then check = 1 ElseIf b(3) + b(6) + b(9) + b(12) + b(15) + b(20) = 6 Then check = 1 ElseIf b(3) + b(6) + b(9) + b(14) + b(17) + b(20) = 6 Then check = 1 ElseIf b(3) + b(6) + b(9) + b(14) + b(19) + b(22) = 6 Then check = 1 ElseIf b(3) + b(8) + b(11) + b(12) + b(15) + b(20) = 6 Then check = 1 ElseIf b(3) + b(8) + b(11) + b(14) + b(17) + b(20) = 6 Then check = 1 ElseIf b(3) + b(8) + b(11) + b(14) + b(19) + b(22) = 6 Then check = 1 ElseIf b(3) + b(8) + b(13) + b(16) + b(17) + b(20) = 6 Then check = 1 ElseIf b(3) + b(8) + b(13) + b(16) + b(19) + b(22) = 6 Then check = 1 ElseIf b(3) + b(8) + b(13) + b(18) + b(21) + b(22) = 6 Then check = 1 End If End Function |
6月1日(土) 14:02:48
40604 |
Mr.ダンディ |
図1ではなく図2のように、修復した8個所すべてを通ってBに到達する場合の数であれば
34(通り)と出ましたが・・・・いかがなものでしょうか ? (こちらを求めても 面白い問題ができるように思いました) |
6月2日(日) 1:41:57
40605 |
かっちゃん |
水曜日の朝、電車の中で考えても重複する20通りの数え方がわからず・・・。しばらく放置してました。 |
6月2日(日) 23:38:05
40606 |