|
問題
次の式で、左辺を計算したとき、右辺と等しくになるように演算子を確定せよ。
±1±2±3±4±5±6±7±8±9±10=11
答え
LET N=10 !1からnまで
LET C=0 !場合の数
FOR i=0 TO 2^N-1 !ビットパターン
LET S=0 !左辺
LET T=i
FOR J=1 TO N
LET S=S+(2*MOD(T,2)-1)*J !±j
LET T=INT(T/2)
NEXT J
IF S=11 THEN !右辺
LET C=C+1
LET T=i !結果を表示する
FOR J=1 TO N
IF MOD(T,2)=1 THEN PRINT "+"; ELSE PRINT "-";
PRINT STR$(J);
LET T=INT(T/2)
NEXT J
PRINT
END IF
NEXT i
PRINT C;"通り"
END
実行結果
+1+2-3+4+5+6+7+8-9-10
-1-2+3+4+5+6+7+8-9-10
+1+2+3-4+5+6+7-8+9-10
-1+2-3+4+5+6+7-8+9-10
+1+2+3+4-5+6-7+8+9-10
-1+2+3-4+5+6-7+8+9-10
+1-2-3+4+5+6-7+8+9-10
-1+2+3+4-5-6+7+8+9-10
+1-2+3-4+5-6+7+8+9-10
-1-2-3+4+5-6+7+8+9-10
+1+2-3-4-5+6+7+8+9-10
-1-2+3-4-5+6+7+8+9-10
+1+2+3+4-5+6+7-8-9+10
-1+2+3-4+5+6+7-8-9+10
+1-2-3+4+5+6+7-8-9+10
+1+2+3+4+5-6-7+8-9+10
-1+2+3+4-5+6-7+8-9+10
+1-2+3-4+5+6-7+8-9+10
-1-2-3+4+5+6-7+8-9+10
+1-2+3+4-5-6+7+8-9+10
+1+2-3-4+5-6+7+8-9+10
-1-2+3-4+5-6+7+8-9+10
-1+2-3-4-5+6+7+8-9+10
-1+2+3+4+5-6-7-8+9+10
+1-2+3+4-5+6-7-8+9+10
+1+2-3-4+5+6-7-8+9+10
-1-2+3-4+5+6-7-8+9+10
+1+2-3+4-5-6+7-8+9+10
-1-2+3+4-5-6+7-8+9+10
-1+2-3-4+5-6+7-8+9+10
+1-2-3-4-5+6+7-8+9+10
+1+2+3-4-5-6-7+8+9+10
-1+2-3+4-5-6-7+8+9+10
+1-2-3-4+5-6-7+8+9+10
-1-2-3-4-5+6-7+8+9+10
35 通り
場合の数
その1
PRINT G(10,11) !漸化式
END
EXTERNAL FUNCTION G(N,S)
IF N=0 THEN
LET G=0
IF S=0 THEN LET G=1
ELSE
LET G=G(N-1,S-N)+G(N-1,S+N)
END IF
END FUNCTION
その2
LET N=10 !動的計画法
LET M=N*(N+1)/2
DIM D(0 TO M+N),DD(0 TO M+N)
MAT D=ZER
MAT DD=ZER
LET D(0)=1
FOR i=1 TO N
LET MX=i*(i+1)/2
FOR S=0 TO MX
LET DD(S)=D(ABS(S-i))+D(S+i)
NEXT S
MAT D=DD
NEXT i
PRINT D(11)
END
|
|