投稿者:山中和義
投稿日:2014年 7月19日(土)09時44分57秒
|
|
|
問題
水を入れる3つの容器があります。
それぞれ6リットル、10リットル、15リットルずつ入ります。途中に目盛りはありません。
この容器を使って、23リットルの水をはかりなさい。
考察
不定方程式±Ax±By±Cz=Nを考える。
たとえば、10x+15y-6z=23のとき、(x,y,z)=(2,1,2)なので、10,10,15,-6,-6
これより、
6 10 15 P
-------------
0 0 0 0
0 10 0 0
0 0 0 10
0 10 0 10
0 0 0 20
0 0 15 20
0 0 0 35
6 0 0 29
0 6 0 29
6 6 0 23
のような単純な操作で実現できる。操作を式で表すと、10+10+15-6-6=23となる。
この場合、10+10+15=35リットルをサーバーからくみ出しているが、
S 6 10 15 P
-------------------
0 0 0 0 0
-10 0 ⑩ 0 0
0 6 4 0 0
0 6 0 0 4
0 0 6 0 4
-4 0 ⑩ 0 4
0 6 4 0 4
0 6 0 0 8
0 0 0 6 8
-9 0 0 ⑮ 8
0 0 0 0 23
-------------------
-23
とすると、ちょうど23リットルのくみ出しになる。
Ax+By-Cz=N≧max(A,B,C)の非負整数解(x,y,z)が、x+y-z>0なら可能となる。(予想)
その他に、
6x+10y-15z=23のとき、(x,y,z)=(3,2,1)なので、6,6,6,10,10,-15
15x+6y-10z=23のとき、(x,y,z)=(1,3,1)なので、15,6,6,6,-10
6x-10y-15z=23のとき、(x,y,z)=(8,1,1)なので、6,6,6,6,6,6,6,6,-10,-15
10x-15y-6z=23のとき、(x,y,z)=(5,1,2)なので、10,10,10,10,10,-15,-6,-6
15x-6y-10z=23のとき、(x,y,z)=(3,2,1)なので、15,15,15,-6,-6,-10
(終り)
LET A=6
LET B=10
LET C=15
LET N=23
CALL Solve(A,B,C,N)
PRINT
CALL Solve2(A,B,C,N)
CALL Solve2(B,C,A,N)
CALL Solve2(C,A,B,N)
PRINT
CALL Solve3(A,B,C,N)
CALL Solve3(B,C,A,N)
CALL Solve3(C,A,B,N)
END
!A,B,C,Nは非負整数とする。不定方程式Ax+By+Cz=Nの非負整数解は、
!By+Cz=N-Ax≧0なので、A=0,1,2,3,…,[N/A]として、By+Cz=Mに帰着させる。
EXTERNAL SUB Solve(A,B,C,N) !Ax+By+Cz=N
FOR X=0 TO N/A
CALL SolveEQU(B,C,N-A*X, Y,Z,K)
IF K=-1 THEN EXIT FOR
NEXT X
PRINT STR$(A);"x+";STR$(B);"y+";STR$(C);"z=";STR$(N)
IF K=-1 THEN PRINT X;Y;Z ELSE PRINT "解なし"
END SUB
!A,B,C,Nは非負整数とする。不定方程式Ax+By-Cz=Nの非負整数解は、
!Ax+By=N+Cz≧0なので、Z=0,1,2,3,…として、Ax+By=Mに帰着させる。
EXTERNAL SUB Solve2(A,B,C,N) !Ax+By-Cz=N
LET Z=0
DO
CALL SolveEQU(A,B,N+C*Z, X,Y,K)
IF K=-1 THEN EXIT DO
LET Z=Z+1
LOOP
PRINT STR$(A);"x+";STR$(B);"y-";STR$(C);"z=";STR$(N)
IF K=-1 THEN PRINT X;Y;Z ELSE PRINT "解なし"
END SUB
!A,B,C,Nは非負整数とする。不定方程式Ax-By-Cz=Nの非負整数解は、
!Ax-N=By+Cz≧0なので、X=0,1,2,3,…として、By+Cz=Mに帰着させる。
EXTERNAL SUB Solve3(A,B,C,N) !Ax-By-Cz=N
LET X=CEIL(N/A) !Ax-N≧0より
DO
CALL SolveEQU(B,C,A*X-N, Y,Z,K)
IF K=-1 THEN EXIT DO
LET X=X+1
LOOP
PRINT STR$(A);"x-";STR$(B);"y-";STR$(C);"z=";STR$(N)
IF K=-1 THEN PRINT X;Y;Z ELSE PRINT "解なし"
END SUB
EXTERNAL SUB SolveEQU(A,B,N, X,Y,K) !Ax+By=Nの非負整数解
LET K=-1
FOR X=0 TO N/A !Ax+By=N
LET Y=(N-A*X)/B
IF Y=INT(Y) THEN EXIT SUB !解
NEXT X
LET K=0 !解なし
END SUB
|
|
|
投稿者:山中和義
投稿日:2014年 7月24日(木)20時26分59秒
|
|
|
> No.3439[元記事へ]
問題
下図のような8×8の格子状の経路を考える。
地点Aから地点Bへ進むとき、交差点を5回曲がる場合の経路は何通りあるか。
A─・─・─・─・─・─・─・
│ │ │ │ │ │ │ │
・─・─・─・─・─・─・─・
│ │ │ │ │ │ │ │
・─・─・─・─・─・─・─・
│ │ │ │ │ │ │ │
・─・─・─・─・─・─・─・
│ │ │ │ │ │ │ │
・─・─・─・─・─・─・─・
│ │ │ │ │ │ │ │
・─・─・─・─・─・─・─・
│ │ │ │ │ │ │ │
・─・─・─・─・─・─・─・
│ │ │ │ │ │ │ │
・─・─・─・─・─・─・─B
答え
a,b,c,d,e,fは自然数とする。
右にa,下にb,右にc,下にd,右にe,下にf または 下にa,右にb,下にc,右にd,下にe,右にf
と進むと、曲がる回数は題意を満たす。
これに、a+c+e=7 かつ b+d+f=7
と制限すれば、距離も題意を満たす。
いま、a,c,eを右方向とすると、
(a-1)+(c-1)+(e-1)=4すなわちx+y+z=4の非負整数解を求めると、重複組合せより、H(4+1,2)=15通りである。
下方向b,d,fも同様なので、15×15=225通りとなる。
また、a,c,eを下方向としても、225通りとなる。
よって、225+225=450通り
(終り)
LET S=0 !場合の数
FOR X=0 TO 4 !x+y+z=4より
FOR Y=0 TO 4-X !y+z=4-xより
LET Z=4-(X+Y)
LET S=S+1
PRINT S; X+1;Y+1;Z+1 !a,c,e
NEXT Y
NEXT X
END
別解
地点Aから右方向に進むとする。交差点を5回曲がる場合の経路は、
1 2 3 4 5 6
A→①─・─・─・─・─・─・
│ ↓
1・ ② → ③
│
2・ ↓
│
3・ ④ → ⑤
│
4・
│
5・ ↓
│
6・
│
・─・─・─・─・─・─・─B
となる。
上の図の偶数番目の位置を決めれば経路は確定する。
その位置は、横方向と縦方向とも、6箇所から2つ選べばよい。
これより、C(6,2)×C(6,2)=15×15=225通りとなる。
また、地点Aから下方向に進んでも、225通りとなる。
よって、225+225=450通り
---------------------------------------------------
問題
500円、100円、50円、10円、5円、1円の硬貨があります。
この6種類の硬貨をそれぞれ1枚以上使って、あわせて15枚で980円をつくるとき、
何通りつくることができますか。
答え
500円、100円、50円、10円、5円、1円の硬貨の枚数を、a,b,c,d,e,fとする。
500a+100b+50c+10d+5e+f=980から、500(a-1)+100(b-1)+50(c-1)+10(d-1)+5(e-1)+(f-1)=314
a+b+c+d+e+f=15から、(a-1)+(b-1)+(c-1)+(d-1)+(e-1)+(f-1)=9
すなわち、
500A+100B+50C+10D+5E+F=314、A+B+C+D+E+F=9 の非負整数解を求める
となる。
314の百の位と一の位に注意して、、A=0,F=4 ∴a=1,f=5
よって、100B+50C+10D+5E=310より、20B+10C+2D+E=62、B+C+D+E=5
62の一の位に注意して、
E=2,e=3のとき、20B+10C+2D=60、B+C+D=3 ∴10B+5C+D=30、B+C+D=3
D=1,d=2のとき、20B+10C+E=60、B+C+E=4
これを解いて、(a,b,c,d,e,f)=(1,4,1,1,3,5)、(1,3,3,2,1,5)
(終り)
FOR B=0 TO 30/10
FOR C=0 TO (30-10*B)/5
LET D=30-(10*B+5*C)
IF B+C+D=3 THEN PRINT B;C;D
NEXT C
NEXT B
PRINT
FOR B=0 TO 60/20
FOR C=0 TO (60-20*B)/10
LET E=60-(20*B+10*C)
IF B+C+E=4 THEN PRINT B;C;E
NEXT C
NEXT B
PRINT 500*1 +100*4 +50*1 +10*1 +5*3 +1*5 !検算
PRINT 500*1 +100*3 +50*3 +10*2 +5*1 +1*5
END
別解
:
:
よって、100B+50C+10D+5E=310より、20B+10C+2D+E=62、B+C+D+E=5
62の一の位の2に注意して、
E=2,e=3のとき、20B+10C+2D=60、B+C+D=3 ∴10B+5C+D=30、B+C+D=3
D=0,1,2,3に注意して、D=0、9B+4C=27、B+C=3
連立させて、B=3, C=0 ∴b=4, c=1, d=1
D=1,d=2のとき、20B+10C+E=60、B+C+E=4
E=0,1,2,3,4に注意して、E=0、19B+9C=56、B+C=4
連立させて、B=2, C=2 ∴b=3, c=3, e=1
|
|
|
投稿者:山中和義
投稿日:2014年 8月 3日(日)06時58分5秒
|
|
|
> No.3446[元記事へ]
2004年度 高知大理学部 推薦入試
10000円を100円玉、50円玉、10円玉に両替する方法は、何通りあるか。
OPTION ARITHMETIC RATIONAL !多桁の整数
PRINT G100(10000)
END
EXTERNAL FUNCTION G10(N) !不定方程式10a=Nの解の個数
OPTION ARITHMETIC RATIONAL !多桁の整数
IF MOD(N,10)<>0 THEN
PRINT "10円未満の金額があります。"
STOP
END IF
LET G10=1 !すべて10円の1通り
END FUNCTION
EXTERNAL FUNCTION G50(N) !10a+50b=N ∴a=N-50bに帰着させる
OPTION ARITHMETIC RATIONAL !多桁の整数
LET S=0
FOR K=0 TO INT(N/50) !50円の枚数
LET S=S+G10(N-50*K) !残りは、10円でつくる
NEXT K
LET G50=S
END FUNCTION
EXTERNAL FUNCTION G100(N) !10a+50b+100c=N ∴10a+50b=N-100cに帰着させる
OPTION ARITHMETIC RATIONAL !多桁の整数
LET S=0
FOR K=0 TO INT(N/100) !100円の枚数
LET S=S+G50(N-100*K) !残りは、50円,10円でつくる
NEXT K
LET G100=S
END FUNCTION
多重FOR文による
OPTION ARITHMETIC RATIONAL !多桁の整数
LET N=10000
LET S=0
FOR C100=0 TO N/100 !100円玉の枚数
FOR C50=0 TO (N-100*C100)/50 !50円玉の枚数
LET S=S+1 !10円玉は1通り
NEXT C50
NEXT C100
PRINT S; "通り"
END
-------------------------------------------------------------------
500円の100円玉、50円玉、10円玉、5円玉、1円玉への両替方法は、19161通りである。
OPTION ARITHMETIC RATIONAL !多桁の整数
PRINT F100(500)
END
!不定方程式 a+5b+10c+50d+100e+500f+1000g+5000h+10000i=N の解の個数
EXTERNAL FUNCTION F1(N) !1円の硬貨で、n円をつくる
OPTION ARITHMETIC RATIONAL !多桁の整数
LET F1=1 !すべて1円の1通り
END FUNCTION
EXTERNAL FUNCTION F5(N) !5円,1円の硬貨で、n円をつくる
OPTION ARITHMETIC RATIONAL !多桁の整数
LET S=0
FOR K=0 TO INT(N/5) !5円の枚数
LET S=S+F1(N-5*K) !残りは、1円でつくる
NEXT K
LET F5=S
END FUNCTION
EXTERNAL FUNCTION F10(N) !10円,5円,1円の硬貨で、n円をつくる
OPTION ARITHMETIC RATIONAL !多桁の整数
LET S=0
FOR K=0 TO INT(N/10) !10円の枚数
LET S=S+F5(N-10*K) !残りは、5円,1円でつくる
NEXT K
LET F10=S
END FUNCTION
EXTERNAL FUNCTION F50(N) !50円,10円,5円,1円の硬貨で、n円をつくる
OPTION ARITHMETIC RATIONAL !多桁の整数
LET S=0
FOR K=0 TO INT(N/50) !50円の枚数
LET S=S+F10(N-50*K) !残りは、10円,5円,1円でつくる
NEXT K
LET F50=S
END FUNCTION
EXTERNAL FUNCTION F100(N) !100円,50円,10円,5円,1円の硬貨で、n円をつくる
OPTION ARITHMETIC RATIONAL !多桁の整数
LET S=0
FOR K=0 TO INT(N/100)
LET S=S+F50(N-100*K)
NEXT K
LET F100=S
END FUNCTION
EXTERNAL FUNCTION F500(N) !500円,100円,50円,10円,5円,1円の硬貨で、n円をつくる
OPTION ARITHMETIC RATIONAL !多桁の整数
LET S=0
FOR K=0 TO INT(N/500)
LET S=S+F100(N-500*K)
NEXT K
LET F500=S
END FUNCTION
EXTERNAL FUNCTION F1000(N) !1000円,500円,100円,50円,10円,5円,1円の硬貨で、n円をつくる
OPTION ARITHMETIC RATIONAL !多桁の整数
LET S=0
FOR K=0 TO INT(N/1000)
LET S=S+F500(N-1000*K)
NEXT K
LET F1000=S
END FUNCTION
EXTERNAL FUNCTION F5000(N) !5000円,1000円,500円,100円,50円,10円,5円,1円の硬貨で、n円をつくる
OPTION ARITHMETIC RATIONAL !多桁の整数
LET S=0
FOR K=0 TO INT(N/5000)
LET S=S+F1000(N-5000*K)
NEXT K
LET F5000=S
END FUNCTION
EXTERNAL FUNCTION F10000(N) !10000円,5000円,1000円,500円,100円,50円,10円,5円,1円の硬貨で、n円をつくる
OPTION ARITHMETIC RATIONAL !多桁の整数
LET S=0
FOR K=0 TO INT(N/10000)
LET S=S+F5000(N-10000*K)
NEXT K
LET F10000=S
END FUNCTION
多重FOR文による
OPTION ARITHMETIC RATIONAL !多桁の整数
LET N=500
LET S=0
FOR C100=0 TO N/100 !100円玉の枚数
LET R50=N-100*C100 !残り
FOR C50=0 TO R50/50 !50円玉
LET R10=R50-50*C50
FOR C10=0 TO R10/10 !10円玉
LET R5=R10-10*C10
!!FOR C5=0 TO R5/5 !5円玉
!! LET S=S+1 !1円玉は1通り
!!NEXT C5
LET S=S+(R5/5+1) !5円玉
NEXT C10
NEXT C50
NEXT C100
PRINT S; "通り"
END
|
|
|
投稿者:山中和義
投稿日:2014年 8月 4日(月)10時14分29秒
|
|
|
> No.3449[元記事へ]
つづき
10000円の5000札、1000円札、500円玉、100円玉、50円玉、10円玉、5円玉、1円玉への両替方法は、
18155171408通りある。
関数の呼出し、かけ算・割り算の負荷を避けて、次のように記述しました。
OPTION ARITHMETIC RATIONAL !多桁の整数
LET M=10000 !金額
LET S=0
FOR C5000=0 TO M STEP 5000 !0,5000,10000,15000,…
LET T5000=M-C5000 !残りの金額に対して
FOR C1000=0 TO T5000 STEP 1000
LET T1000=T5000-C1000
FOR C500=0 TO T1000 STEP 500
LET T500=T1000-C500
FOR C100=0 TO T500 STEP 100
LET T100=T500-C100
FOR C50=0 TO T100 STEP 50
LET T50=T100-C50
FOR C10=0 TO T50 STEP 10
LET T10=T50-C10
LET S=S+INT(T10/5)+1 ! !0,5,10,15,… ※5n円を5,1円で両替する n+1通り
NEXT C10
NEXT C50
NEXT C100
NEXT C500
NEXT C1000
NEXT C5000
PRINT S;"通り" !18155171408 通り
END
参考サイト
コロキウム室 http://www2.ocn.ne.jp/~mizuryu/renzoku.html 第196回数学的な応募問題
|
|
|
投稿者:山中和義
投稿日:2014年 8月22日(金)19時24分8秒
|
|
|
> No.3450[元記事へ]
問題
4つの正の整数a,b,c,dを
a b
c d
と並べて、たすきに掛けた数が、ad+1=bcを満たすとする。
a=d=1のとき、b,cを求めよ。
答え
ad+1=bcより、2=bc ∴(b,c)=(2,1),(1,2)
(終り)
問題
6つの正の整数a,b,c,d,e,fを
a b c
d e f
と並べて、たすきに掛けた数が、ae+1=bd、bf+1=ceを満たすとする。
a=f=1のとき、b,c,d,eを求めよ。
答え
1 k (k+1)/A
(A+1)/k A 1
と、kを(A+1)の約数とすると、1つの変数Aで表せる。
A=1のとき、
1 k k+1
2/k 1 1
なので、k=1,2
並びは、
1 1 2 1 2 3
2 1 1 1 1 1
A=2のとき、
1 k (k+1)/2
3/k 2 1
なので、k=1,3
並びは、
1 1 1 1 3 2
3 2 1 1 2 1
A=3のとき、
1 k (k+1)/3
4/k 3 1
なので、k=2
並びは、
1 2 1
2 3 1
A=4のとき、
:
:
FOR A=1 TO 50
FOR K=1 TO A+1
IF MOD(A+1,K)=0 THEN
IF MOD(K+1,A)=0 THEN
PRINT 1;K;(K+1)/A
PRINT (A+1)/K;A;1
PRINT
END IF
END IF
NEXT K
NEXT A
END
ところで、A≧3のとき、
kは(A+1)の約数なので、1≦k≦A+1 ∴2≦k+1≦A+2
右端上(k+1)/A≦(A+2)/A=1+2/A A≧3から、正の整数になるのは、1のみである。
よって、(k+1)/A=1 ∴k=A-1
左端下(A+1)/k=(A+1)/(A-1)=1+2/(A-1)
これが正の整数になるには、A=3のみである。
したがって、
1 2 1
2 3 1
のみとなる。
(終り)
対称性
a b c … d
e f g … h
が題意を満たすなら、
h … g f e
d … c b a
も題意を満たす。
問題
8つの正の整数a,b,c,d,e,f,g,hを
a b c d
e f g h
と並べて、たすきに掛けた数が、af+1=be、bg+1=cf、ch+1=dgを満たすとする。
a=h=1のとき、b,c,d,e,f,gを求めよ。
答え
2つの変数A,Bで
1 k B (B+1)/m
(A+1)/k A m 1
として、
FOR A=1 TO 50
FOR B=1 TO A !対称性
FOR K=1 TO A+1
IF MOD(A+1,K)=0 THEN
FOR M=1 TO B+1
IF MOD(B+1,M)=0 THEN
IF K*M+1=A*B THEN
PRINT 1;K;B;(B+1)/M
PRINT (A+1)/K;A;M;1
PRINT
END IF
END IF
NEXT M
END IF
NEXT K
NEXT B
NEXT A
END
実行結果
1 1 1 2
3 2 1 1
1 1 2 1 ※1
3 2 3 1
1 3 2 3 ※1
1 2 1 1
1 1 1 1
4 3 2 1
1 2 1 2
2 3 1 1
1 2 3 1 ※2
2 3 4 1
1 4 3 2 ※2
1 3 2 1
1 2 1 1
3 5 2 1
1 3 2 1
2 5 3 1
※は対称となるので、14通り
問題
2n個の正の整数a[1],a[2],…,a[n],b[1],b[2],…,b[n]を
a[1],a[2],…,a[n]
b[1],b[2],…,b[n]
と並べて、たすきに掛けた数が、
a[1]b[2]+1=a[2]b[1]、a[2]b[3]+1=a[3]b[2]、…、a[n-1]b[n]+1=a[n]b[n-1]を満たすとする。
a[1]=b[n]=1のとき、a[2],a[3],…,a[n],b[1],b[2],…,b[n-1]を求めよ。
予想
●個数
C(2n,n)/(n+1)、すなわち、カタラン数
●並びの生成方法
n=2のとき
並び
1 2 1 1
1 1 2 1
なので、
1/1 2/1 1/2 1/1
のように、上段を分子、下段を分母とする分数で表すと、
分数列 1/2 1/1 2/1
└─┘└─┘
から、1/1を含んで連続する2項を選んだと解釈できる。
n=3のとき
1 1 2 1 2 3
2 1 1 1 1 1
なので、
1/2 1/1 2/1 1/1 2/1 3/1
1 1 1 1 3 2
3 2 1 1 2 1
なので、
1/3 1/2 1/1 1/1 3/2 2/1
1 2 1
2 3 1
なので、
1/2 2/3 1/1
┌───┐ ┌───┐
分数列 1/3 1/2 1/1 2/1 3/1
└─┘ └─┘
└─────┘
から、1/1を含んで連続する2項または3項を選んだと解釈できる。
2項の場合は、中間分数を考える。
補足 1:1の中間分数(隣り合う分数)
並び
a c
b d
が、ad+1=bcを満たすとする。
このとき、
a a+c c
b b+d d
を考える。
ad+1=bcの両辺にabをたして、ab+ad+1=ab+bc ∴a(b+d)+1=b(a+c)
ad+1=bcの両辺にcdをたして、ad+1+cd=bc+cd ∴(a+c)d+1=(b+d)c
これより、題意を満たして列を増やすことができる。
(終り)
参考サイト
私の備忘録
数学・・・代数学分野
|
|
|
投稿者:山中和義
投稿日:2014年 8月24日(日)19時14分13秒
|
|
|
> No.3464[元記事へ]
> 問題
> 2n個の正の整数a[1],a[2],…,a[n],b[1],b[2],…,b[n]を
> a[1],a[2],…,a[n]
> b[1],b[2],…,b[n]
> と並べて、たすきに掛けた数が、
> a[1]b[2]+1=a[2]b[1]、a[2]b[3]+1=a[3]b[2]、…、a[n-1]b[n]+1=a[n]b[n-1]を満たすとする。
> a[1]=b[n]=1のとき、a[2],a[3],…,a[n],b[1],b[2],…,b[n-1]を求めよ。
自明な解
その1
1 2 3 … n-1 n
1 1 1 … 1 1
その2
フィボナッチ数列 1,1,2,3,5,8,13,21,34,55,… を、
n : ① ③ ⑤ ⑦ ⑨ ⑧ ⑥ ④ ②
a[n+1]/a[n] : 1/1, 3/2, 8/5, 21/13, 55/34, …,φ, …, 34/21, 13/8, 5/3, 2/1
のように、φを中心として左右交互に並べる。
|
|
|
投稿者:山中和義
投稿日:2014年 8月28日(木)06時30分31秒
|
|
|
> No.3465[元記事へ]
問題
n個のさいころを投げて、出たn個の目の積が6の倍数である確率を求めよ。
答え
少なくとも1つが偶数 かつ 少なくとも1つが3の倍数 であればよい。
その確率は、余事象から、(1-(1/2)^n)(1-(2/3)^n)
(終り)
その他の解法
●漸化式による
3個のさいころを大,中,小とする。
まず、大,中の積が、
2の倍数になるのは、27通り
3の倍数になるのは、20通り
6の倍数になるのは、15通り
である。
残りの小の目が、
1,5の場合、大,中の積が6の倍数のとき、15×2通り
2,4の場合、大,中の積が3の倍数のとき、20×2通り
3の場合、大,中の積が2の倍数のとき、27通り
6の場合、大,中の積は何でもよいので、6^2=36通り
よって、15×2+20×2+27+36=133通り
FOR N=1 TO 10
PRINT N; f6(N); f6(N)/6^N; (1-(1/2)^N)*(1-(2/3)^N)
NEXT N
END
EXTERNAL FUNCTION f2(n) !2の倍数
IF N=1 THEN
LET f2=3 !2,4,6
ELSE
!n番目について、
!1,3,5のとき、(n-1)番までが2の倍数なら、2の倍数になる。
!2,4,6のとき、(n-1)番までは何でも良い。
LET f2=3*f2(n-1)+3*6^(n-1)
END IF
END FUNCTION
EXTERNAL FUNCTION f3(n) !3の倍数
IF N=1 THEN
LET f3=2 !3,6
ELSE
!1,2,4,5のとき、(n-1)番までが3の倍数
!3,6のとき、(n-1)番までは何でも良い
LET f3=4*f3(n-1)+2*6^(n-1)
END IF
END FUNCTION
EXTERNAL FUNCTION f6(n) !6の倍数
IF N=1 THEN
LET f6=1 !6
ELSE
!1,5のとき、(n-1)番までが6の倍数
!2,4のとき、(n-1)番までが3の倍数
!3のとき、(n-1)番までが2の倍数
!6のとき、(n-1)番までは何でも良い
LET f6=2*f6(n-1)+2*f3(n-1)+1*f2(n-1)+1*6^(n-1)
END IF
END FUNCTION
●不定方程式 x[1]x[2]x[3]…x[n]=m、1≦x[1]≦x[2]≦x[3]≦…≦x[n]≦6 の解
例 n=3のとき、xyz=6k
LET N=3 !n個の変数
DIM X(0 TO N) !※0番目は番兵
LET X(0)=1
PUBLIC NUMERIC C,S
LET C=0
LET S=0
LET K=1
DO WHILE 6*K<=6^N
CALL try(1, N,X,6*K)
LET K=K+1
LOOP
PRINT C;"通り"
PRINT S;"通り" !場合の数
END
EXTERNAL SUB try(P, N,X(),M) !x[1]x[2]x[3]…x[n]=m の解
IF P=N THEN !最後の変数のとき
IF X(P-1)<=M AND M<=6 THEN
LET X(P)=M
LET C=C+1
MAT PRINT X;
DIM B(6) !n!/(p!q!…r!)通りに並べる
MAT B=ZER
FOR i=1 TO N
LET B(X(i))=B(X(i))+1
NEXT i
LET S=S+PermFactorialM(B,6)
END IF
ELSE
FOR K=X(P-1) TO 6 !昇順
IF MOD(M,K)=0 THEN !約数なら
LET X(P)=K
CALL try(P+1, N,X,M/K) !次へ
END IF
NEXT K
END IF
END SUB
!COMB.LIB 抜粋
EXTERNAL FUNCTION PermFactorialM(B(),M) !同じものを含む順列の「場合の数」
LET s=B(M) !総数 r, … ,q+ … +r,p+q+ … +r
LET t=1 !組合せ comb(r,r), … ,comb(q+ … +r,q),comb(p+q+ … +r,p)
FOR i=M-1 TO 1 STEP -1
LET s=s+B(i)
LET t=t*COMB(s,B(i)) !組合せ順列
NEXT i
LET PermFactorialM=t
END FUNCTION
-----------------------------------------
発展問題
n個のさいころを投げて、出たn個の目の積が立方数となる場合の数を求めよ。
答え
不定方程式版のプログラムを
:
LET S=0
LET K=1
DO WHILE K^3<=6^N
CALL try(1, N,X,K^3)
LET K=K+1
LOOP
PRINT C;"通り"
:
と変更して、実行する。
類題
大中小3個のさいころを投げるとき、目の積が60になるのは何通りあるか。
答え
:
LET S=0
CALL try(1, N,X,60)
PRINT C;"通り"
:
(終り)
別解
(1+x+y+x^2+z+xy)^n を展開したとき、
x^(3a) y^(3b) z^(3c)
という形にかける項の係数をすべて足し合わせたものになる。
(終り)
OPTION ARITHMETIC COMPLEX !複素数を扱う
LET N=2 !さいころの個数
LET K=3 !k乗
LET w=EXP(2*PI*COMPLEX(0,1)/K) !w^k-1=0
LET S=0
FOR A=0 TO K-1
FOR B=0 TO K-1
FOR C=0 TO K-1
LET S=S+(1+w^A+w^B+w^(2*A)+w^C+w^(A+B))^N
NEXT C
NEXT B
NEXT A
S=S/K^3 !場合の数
PRINT S
END
|
|
|
投稿者:山中和義
投稿日:2014年 9月13日(土)13時28分42秒
|
|
|
> No.3474[元記事へ]
問題
a,b,c,dは、整数とする。
行列式
| a b | = 1
| c d |
| a^2 b^2 | = 1
| c^2 d^2 |
を満たすものを探しなさい。
答え
ad-bc=1
a^2d^2-b^2c^2=(ad-bc)(ad+bc)=ad+bc=1
連立方程式を解いて、ad=1、bc=0 ∴a=d=±1 かつ( b=0 または c=0 )
よって、
| ±1 0 | = | 1 0 | = 1
| c ±1 | | c^2 1 |
または、
| ±1 b | = | 1 b^2 | = 1
| 0 ±1 | | 0 1 |
ただし、複号同順とする。
(終り)
--------------------------------------------------------------
問題
a,b,c,d,e,f,g,h,iは、2以上10以下の整数とする。
行列式
| a b c | = 1
| d e f |
| g h i |
| a^2 b^2 c^2 | = 1
| d^2 e^2 f^2 |
| g^2 h^2 i^2 |
を満たすものを探しなさい。
答え
9^9=387420489通りの検索になるが、工夫して計算量を減らす。
a b c 転置 a d g
d e f → b e h
g h i c f i
↓180°回転 ↓180°回転
i h g 転置 i f c
f e d → h e b
c b a g d a
式で表すと、
aei+bfg+cdh-ceg-bdi-afh → aei+dhc+gbf-gec-dbi-ahf
↓ ↓
iea+hdc+gfb-gec-hfa-idb → iea+fbg+chd-ceg-fha-ibd
は同値なので、
2≦c≦g≦9、2≦a≦i≦9
とする。
また、
| a b c | = a| e f |- b| d f | +c| d e |
| d e f | | h i | | g i | | g h |
| g h i |
P1=ei-fh、P2=di-fg、P3=dh-egとすると、
=aP1-bP2+cP3
X=aP1, Y=bP2, Z=cP3 とすると、
=X-Y+Z
| a^2 b^2 c^2 | = a^2| e^2 f^2 | - b^2| d^2 f^2 | +c^2| d^2 e^2 |
| d^2 e^2 f^2 | | h^2 i^2 | | g^2 i^2 | | g^2 h^2 |
| g^2 h^2 i^2 |
Q1=ei+fh、Q2=di+fg、Q3=dh+egとすると、e^2i^2-f^2h^2=(ei-fh)(ei+fh)など より、
=aP1aQ1-bP1bQ2+cP3cQ3
X'=aQ1, Y'=bQ2, Z'=cQ3 とすると、
=XX'-YY'+ZZ'
よって、不定方程式
X-Y+Z=1
XX'-YY'+ZZ'=1
を得る。
LET S=0
FOR E=2 TO 10
FOR i=2 TO 10
FOR F=2 TO 10
FOR H=2 TO 10
LET P1=E*i-F*H
LET Q1=E*i+F*H
FOR D=2 TO 10
FOR G=2 TO 10
LET P2=D*i-F*G
LET Q2=D*i+F*G
LET P3=D*H-E*G
LET Q3=D*H+E*G
FOR A=2 TO i !対称性(180°回転)
LET X=A*P1
LET XX=A*Q1
FOR C=2 TO G !対称性(転置)
LET Z=C*P3
LET ZZ=C*Q3
FOR B=2 TO 10
LET Y=B*P2
LET YY=B*Q2
IF X-Y+Z=1 AND X*XX-Y*YY+Z*ZZ=1 THEN !題意を満たすもの
IF A=i AND C=G THEN !対称性(転置、180°回転)
IF D>=B AND H>=B THEN
PRINT A;B;C
PRINT D;E;F
PRINT G;H;i
PRINT
LET S=S+1
END IF
ELSE
PRINT A;B;C
PRINT D;E;F
PRINT G;H;i
PRINT
LET S=S+1
END IF
END IF
NEXT B
NEXT C
NEXT A
NEXT G
NEXT D
NEXT H
NEXT F
NEXT i
NEXT E
PRINT S; "通り"
END
実行結果
4 3 2
2 2 3
9 7 6
4 2 3
9 2 5
10 3 6
2 4 3
3 2 2
6 9 7
2 3 5
3 2 3
9 5 7
2 3 2
4 2 3
9 6 7
2 3 3
3 2 5
5 9 7
5 3 6
2 2 3
9 4 10
4 3 4
5 3 3
9 5 4
5 2 3
9 3 2
7 3 5
5 2 3
3 3 2
7 9 5
3 2 3
5 3 2
7 5 9
3 2 4
2 3 2
7 6 9
3 5 2
2 3 3
5 7 9
3 2 2
2 3 4
6 7 9
3 4 4
3 3 5
5 4 9
3 2 2
6 3 5
10 4 9
3 2 4
6 3 10
5 2 9
3 5 3
3 4 4
5 9 4
5 3 3
4 4 3
9 4 5
2 2 3
3 4 2
7 9 6
2 2 3
9 4 10
5 3 6
3 9 2
2 5 3
3 7 5
3 3 2
2 5 3
9 7 5
4 4 3
3 5 3
4 9 5
2 2 3
3 5 6
4 9 10
2 3 2
5 6 3
9 10 4
2 3 2
7 6 9
3 2 4
2 6 3
3 7 2
4 9 2
2 2 3
9 7 6
4 3 2
2 3 3
5 7 9
3 5 2
3 4 2
5 9 2
6 10 3
3 5 2
2 9 3
5 7 3
3 2 2
10 9 4
6 5 3
3 3 2
7 9 5
5 2 3
3 5 3
4 9 5
4 4 3
3 2 2
6 9 7
2 4 3
2 3 2
4 10 9
3 6 5
37 通り
|
|
|
戻る