|
EG |
|
一番上の段を1234に固定して,下2段組み合わせが24通り,
一番上の段の並べ替えが24通りなので,24×24=576としました。 焦ってたので途中でミスしまくって2回も誤答送信してしまいました(涙)。 |
|
1月21日(木) 0:13:04
50026 |
|
ベルク・カッツェ |
|
一行目の決め方は4×3×2×1=24通り。
二行目を1と2、3と4のように2つずつ入れ替える場合、入れ替え方は3通りで、三行目は12のところに34いずれか、34のところに12いずれかが入るので2×2=4t通り、よって3×4=12通り。 二行目を1→2→3→4→1のように入れ替える場合、入れ替え方は3×2×1=6通りで、三行目は2通りなので6×2=12通り。 全部で24×(12+12)=576通りになりました。 最初見たときは難しそうな気がしましたが、二行目の入れ替えの場合分けを工夫してみたらうまくいきました。 |
|
1月21日(木) 0:14:23
50027 |
|
ゴンとも |
|
十進Baisc で
abcd efgh ijkl とアルファべットを振り for a=1 to 4 for b=1 to 4 for c=1 to 4 for d=1 to 4 if a+b+c+d<>10 or a*b*c*d<>24 then goto 90 for e=1 to 4 if e=a then goto 80 for f=1 to 4 if f=b then goto 70 for g=1 to 4 if g=c then goto 60 for h=1 to 4 if h=d then goto 50 if e+f+g+h<>10 or e*f*g*h<>24 then goto 50 for i=1 to 4 if i=a or i=e then goto 40 for j=1 to 4 if j=b or j=f then goto 30 for k=1 to 4 if k=c or k=g then goto 20 for l=1 to 4 if l=d or l=h then goto 10 if i+j+k+l<>10 or i*j*k*l<>24 then goto 10 let s=s+1 10 next l 20 next k 30 next j 40 next i 50 next h 60 next g 70 next f 80 next e 90 next d 100 next c 110 next b 120 next a print s end f9 押して 576・・・・・・(答え) |
|
豊川市
1月21日(木) 0:18:45
MAIL:fttnm528@ybb.ne.jp 50028 |
|
いちごみるく |
|
1234
2??? 3??? まで固定してしまって後で144倍すればいいので 144*4が答え |
|
1月21日(木) 0:31:04
50029 |
|
ゴンとも |
|
#50028
間違ってないか全事象を通し番号を振るプログラムに変えて for a=1 to 4 for b=1 to 4 for c=1 to 4 for d=1 to 4 if a+b+c+d<>10 or a*b*c*d<>24 then goto 90 for e=1 to 4 if e=a then goto 80 for f=1 to 4 if f=b then goto 70 for g=1 to 4 if g=c then goto 60 for h=1 to 4 if h=d then goto 50 if e+f+g+h<>10 or e*f*g*h<>24 then goto 50 for i=1 to 4 if i=a or i=e then goto 40 for j=1 to 4 if j=b or j=f then goto 30 for k=1 to 4 if k=c or k=g then goto 20 for l=1 to 4 if l=d or l=h then goto 10 if i+j+k+l<>10 or i*j*k*l<>24 then goto 10 LET s=s+1 PRINT "No.";s PRINT a;b;c;d PRINT e;f;g;h PRINT i;j;k;l 10 next l 20 next k 30 next j 40 next i 50 next h 60 next g 70 next f 80 next e 90 next d 100 next c 110 next b 120 next a end f9押して 576羅列!!(略) |
|
豊川市
1月21日(木) 0:36:45
MAIL:fttnm528@ybb.ne.jp 50030 |
|
今年から高齢者 |
|
もう1行増やす
この増やした行は一義的に決まる。 1234 2341 2312 4123 が解。 行を並べかえる_4! 列を並べかえる_4! 1行を消す。 4!*4!=576 こんな解き方でも良いのかな! |
|
1月21日(木) 1:09:46
50031 |
|
今年から高齢者 |
|
#50031入力ミス
1234 2341 3412 4123 |
|
1月21日(木) 1:11:22
50032 |
|
今年から高齢者 |
|
#50031入力ミス
1234 2341 3412 4123 |
|
1月21日(木) 1:54:46
50033 |
|
今年から高齢者 |
|
#50031の考え方は間違いです。
お詫び:間違えてくだらない書き込みがダブってしまいました 第862回の問題が全く同じです |
|
1月21日(木) 1:58:20
50034 |
|
今年から高齢者 |
|
#50034連続入力ミス
第892回の問題です |
|
1月21日(木) 2:00:11
50035 |
|
「数学」小旅行 |
|
1行目は順列、2行目は攪乱順列の数ですが、
3行目が1行目に対する2行目の出来方で違ってきて、 2個の入れ替わりでできたいるなら4通り、 そうでないなら2通りになるのですね。 簡単そうでむつかしい問題だと思いました。 |
|
1月21日(木) 7:24:04
50036 |
|
スモークマン |
|
朝考えたら気づけました ^^;v
被ってるかも...Orz 4x4で... 縦で考え... 4!*3*2*2=288 3列でいいので... 288*2=576 ♪ |
|
1月21日(木) 8:14:58
50037 |
|
スモークマン |
|
3行でいいので...でした...
↓ |
|
1月21日(木) 8:17:42
50038 |
|
次郎長 |
|
今日はお休み。庭掃除の前にちょっと覗いてみようとチャレンジ。
考える前に、今日の運試し。一発で入ってしまった。 転ばないように気をつけよう |
|
1月21日(木) 10:23:30
50039 |
|
Jママ |
|
曜日を勘違い(^o^;)
4行にして一番下を取っても同じなので 1から順に、行、列から一つずつ選んでいくと考え 4!×4!=576通り |
|
1月21日(木) 10:26:51
50040 |
|
まるケン |
|
#50029 いちごみるくさんと同じ攻め方でした。
検算の意味でワンライナー Ruby です。 p [1,2,3,4].permutation(4).to_a.permutation(3).to_a.map{|a|[0,1,2,3].map{|i|a.transpose[i].uniq.size==3?1:0}.sum==4?1:0}.sum |
|
1月21日(木) 11:04:10
50041 |
|
ゴンとも |
|
#50034
>第862回の問題が全く同じです それは気付かったんで過去レスを見ると #41981 >ゴンともさんのプログラムを借用・修正して、 >1〜3の2×3マスや1〜4の2×4マスを試してみましたが合いません。 >1〜3の2×3マスで12とおり、1〜4の2×4マスで216とおりとなりました。 書き込みが最後の方で見てなかったみたいで・・・ #41983 のプログラムと同様で全事象を羅列して 12,216になるものを書きました!! (a)(b)(c) (d)(e)(f) for a=1 to 3 for b=1 to 3 for c=1 to 3 if a+b+c<>6 or a*b*c<>6 then goto 40 for d=1 to 3 if a=d then goto 30 for e=1 to 3 if e=b then goto 20 for f=1 to 3 if f=c then goto 10 if d+e+f<>6 or d*e*f<>6 then goto 10 let s=s+1 print "No.";s print a;b;c print d;e;f 10 next f 20 next e 30 next d 40 next c 50 next b 60 next a print s;"通り・・・・・・(答え)" end (a)(b)(c)(d) (e)(f)(g)(h) for a=1 to 4 for b=1 to 4 for c=1 to 4 for d=1 to 4 if a+b+c+d<>10 or a*b*c*d<>24 then goto 50 for e=1 to 4 if e=a then goto 40 for f=1 to 4 if f=b then goto 30 for g=1 to 4 if g=c then goto 20 for h=1 to 4 if h=d then goto 10 if e+f+g+h<>10 or e*f*g*h<>24 then goto 10 let s=s+1 print "No.";s print a;b;c;d print e;f;g;h 10 next h 20 next g 30 next f 40 next e 50 next d 60 next c 70 next b 80 next a print s;"通り・・・・・・(答え)" end |
|
豊川市
1月21日(木) 11:33:23
MAIL:fttnm528@ybb.ne.jp 50042 |
|
ベルク・カッツェ |
|
892回と同じだったんですね。
前回自分が苦戦していたらしい過去ログを見て、少しは成長したかなと思いました。 |
|
1月21日(木) 11:56:04
50043 |
|
ベルク・カッツェ |
|
#50024
やはり比で求まるんですね。 あとでゆっくり読んでみます。 |
|
1月21日(木) 12:18:26
50044 |
|
「数学」小旅行 |
|
私もRubyでしてみました。いま掲示板を見ると、
#50031 まるケン 様とほぼ同じ考え方です。 p [1,2,3,4].permutation.to_a.permutation(3).to_a.delete_if{|j| j.transpose.map{|i|i.uniq.size}.count(3)<4}.size |
|
1月21日(木) 13:36:51
50045 |
|
にこたん |
| 一番上を固定して調べました。。。 |
|
1月21日(木) 15:41:57
50046 |
|
Jママ |
|
#50040ですが、考え直すと再現性(3×3,2×2のときなど)が無いように思うので、
ただのまぐれ当たりだったかも知れません(・.・;) すみません… |
|
1月21日(木) 16:30:00
50047 |
|
M |
|
pythonで総当たりしました
import itertools a = [1,2,3,4] b = [1,2,3,4] c = [1,2,3,4] A = list(itertools.permutations(a)) B = list(itertools.permutations(b)) C = list(itertools.permutations(c)) s=0 for x in A: for y in B: for z in C: if x[0] != y[0] and y[0] != z[0] and x[0] != z[0]: if x[1] != y[1] and y[1] != z[1] and x[1] != z[1]: if x[2] != y[2] and y[2] != z[2] and x[2] != z[2]: if x[3] != y[3] and y[3] != z[3] and x[3] != z[3]: s += 1 print(s) |
|
1月21日(木) 19:04:56
50048 |
|
M |
| https://colab.research.google.com/gist/naritatsu/9f36139b1303cc40338c29ba8bb36e27/math_challenge_1158.ipynb?hl=ja#scrollTo=rbWATs6kSmrM |
|
1月21日(木) 19:05:06
50049 |
|
ばち丸 |
|
これは2020年京都大学理系5番と全く同じ?
https://www.densu.jp/kyoto/20kyotospass.pdf |
|
1月21日(木) 20:26:08
MAIL:hbmath1965@yahoo.co.jp 50050 |
|
ゴンとも |
|
#42007
>wxMaxima で、1から5の場合をプログラムしてみました。(以下の通り) >実行結果、316.5秒で答えが出ました。 2014年だから6年前ですか?!自分もやってみました!! 十進Basic で (a)(b)(c)(d)(e) (f)(g)(h)(i)(j) (k)(l)(m)(n)(o) (p)(q)(r)(s)(t) と変数を振り以下のコードで print time$ for a=1 to 5 for b=1 to 5 for c=1 to 5 for d=1 to 5 for e=1 to 5 if a+b+c+d+e<>15 or a*b*c*d*e<>120 then goto 160 for f=1 to 5 if f=a then goto 150 for g=1 to 5 if g=b then goto 140 for h=1 to 5 if h=c then goto 130 for i=1 to 5 if i=d then goto 120 for j=1 to 5 if j=e then goto 110 if f+g+h+i+j<>15 or f*g*h*i*j<>120 then goto 110 for k=1 to 5 if k=a or k=f then goto 100 for l=1 to 5 if l=b or l=g then goto 90 for m=1 to 5 if m=c or m=h then goto 80 for n=1 to 5 if n=d or n=i then goto 70 for o=1 to 5 if o=e or o=j then goto 60 if k+l+m+n+o<>15 or k*l*m*n*o<>120 then goto 60 for p=1 to 5 if p=a or p=f or p=k then goto 50 for q=1 to 5 if q=b or q=g or q=l then goto 40 for r=1 to 5 if r=c or r=h or r=m then goto 30 for s=1 to 5 if s=d or s=i or s=n then goto 20 for t=1 to 5 if t=e or t=j or t=o then goto 10 if p+q+r+s+t<>15 or p*q*r*s*t<>120 then goto 10 let s1=s1+1 10 next t 20 next s 30 next r 40 next q 50 next p 60 next o 70 next n 80 next m 90 next l 100 next k 110 next j 120 next i 130 next h 140 next g 150 next f 160 next e 170 next d 180 next c 190 next b 200 next a print s1 print time$ end 20:38:04 161280 20:38:11 で7秒でした!! >しかし、1から6の場合を計算するには、もっと工夫しないと・・・ >数百時間もかかりそうです(^^;; 今からやろうと思います!! けど数百時間もかかるのならできませんよね〜何日も。 |
|
豊川市
1月21日(木) 20:50:15
MAIL:fttnm528@ybb.ne.jp 50051 |
|
クラゲ |
| 京大入試と同じ問題ですね |
|
1月21日(木) 21:07:24
50052 |
|
だいすけ @カレー好き |
|
今週は仕事が忙しくてリアルタイムで参加できませんでした。泣
今年の京大ですね。 |
|
1月21日(木) 21:22:26
50053 |
|
にゃもー君(>ω<)ノシ |
|
昨年の京大の問題から1行削ったものですね。
左1列の並べ方が4×6=24…�� 1列目の右3つの並べ方が6通り…�� 2列目の右3つの並べ方が3パターンあって、それぞれにのパターンで 3行目の右3つの並べ方が1+1+2の、4通り…�� 24×6×4=576 今回の関西中学入試の算数 難易度だけ見たら東大寺>灘 東大寺の大問3・平面図形問題は算チャレで出てもおかしくない難しさと感じました。 |
|
浦和
1月21日(木) 21:41:57
50054 |
|
Shim Koba |
|
にゃーも君さんに同じく。
1列目24とーり、12、21、34、43の逆さセットの形が、1&2、1&3、1&4の3通り、逆セット以外が6とーり。 逆セットは3列目が2×2=4とーりずつ。 それ以外はカクラン順列から2とーり。 よって24×3×4=288 24×6×2=288 288+288=576 で 576とーリ |
|
1月22日(金) 4:05:55
50055 |
|
いちごみるく |
|
更にもう一行同じルールで加えても問題ないことが
簡単にに示せるので 1234 2??? 3??? 4???から始めると 1234 2?4? 342? 4??2 1234 2?4? 34?2 4?2? 1234 24?? 3?42 4?2? のケースしかありえないのすぐわかるので 24*6*(1+2+1)とやるのが早い気がします |
|
1月22日(金) 18:23:47
50056 |
|
いちごみるく |
|
6*6ぐらいなら0.031secで終わりました。
7*7に75秒かかりますが61479419904000と正しい答えを出せます #include "bits/stdc++.h" using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); ++i) #define rep2(i,l,r)for(int i=(l);i<(r);++i) #define endl "\n" long long N, M, subM; int memo[5040][7]; bool Check[7][7]; long long dfs(int d) { if (d == (N - 2)) { return 1; } long long ret = 0; rep2(i, (d + 1)*subM, (d + 2)*subM) { bool b = true; rep(j, N) { if (Check[j][memo[i][j]]) { b = false; } } if (b) { rep(j, N) { Check[j][memo[i][j]] = true; } ret += dfs(d + 1); rep(j, N) { Check[j][memo[i][j]] = false; } } } return ret; } int main() { cin >> N; M = 1; vector<int> v; rep(i, N) { v.push_back(i); M *= (i + 1); } subM = M / N; int now = 0; do { rep(i, N) { memo[now][i] = v[i]; } now++; } while (next_permutation(v.begin(), v.end())); rep(i, N) { Check[i][i] = true; } long long ans = M * subM; ans *= dfs(0); cout << ans << endl; } |
|
1月22日(金) 19:15:56
50057 |
|
ゴンとも |
|
#50051
>今からやろうと思います!! >けど数百時間もかかるのならできませんよね〜何日も。 6*5=30変数で・・・1から6まで 5*4=20変数で1から5までで7秒だったんですが・・・ 22:20:53 812851200 23:10:05 49分12秒 でなく 72時間49分12秒 途中まで違うコードで計3プログラム走らせて(遅くなるなるらしいです) 何時間後に2個を捨てて・・・ |
|
豊川市
1月24日(日) 23:32:23
MAIL:fttnm528@ybb.ne.jp 50058 |
|
「数学」小旅行 |
|
#50057 #50058
私の以前の #50045 の総当たり方式では n=6 の場合、丸一日やっても出ませんでした。 計算中はパソコンの動きがあまりにも鈍くて我慢できず中断してしまいました。 そこで、一マスずつ順番に縦横を見ながら埋めていく方式に変更して、次のようにしました。Ruby再帰です。 n=5で、0.15秒、n=6で、79.81秒、n=7で、いま計算中です。結果は後ほど。.. $n=7 #ここをn=4,n=5,n=6,,,とするだけでいいです。 $cn=0 a=Array.new() $r=Array.new() 1.step($n){|i|a<<i} $r<<a 2.step($n){|i|$r<<Array.new($n,0)} def c(e,f) if f==$n then e+=1;f=0 end if e>=$n then $cn+=1 else 1.step($n){|s| if !($r[e].include?(s) or $r.transpose[f].include?(s)) then $r[e][f]=s c(e,f+1) end } $r[e][f]=0 end end t1=Time.now c(1,0);1.step($n){|i|$cn*=i};p $cn t2=Time.now p t2-t1 |
|
1月25日(月) 8:49:54
50059 |
|
巷の夢 |
|
本日、久方ぶりに掲示板を覗くと、何と7年前にマサル様が出題した
問題が、昨年の京大入試に出ていたと理解しました。 これって、素晴らしいことですが、国立大学が・・・・。 何か誤解しているのでしょうか・・・・? |
|
真白き富士の嶺
1月25日(月) 19:01:01
50060 |