�������裱���������ʬ�β�����

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

過去問題一覧へ戻る