|
> No.3498[元記事へ]
発展問題
正の整数が書かれたカードが何枚かあり、全てのカードの和は15であるとする。
1以上15以下の任意の整数kに対し、書かれた数の和がkになるように何枚かを選び出すことができるという。
またその選び方は、同じ数の書かれたカードを区別しないものとするとただ1通りである。
このようなカードの組合せはどのようなものが可能か、全ての組合せを探して下さい。
例
5の場合、
1,1,1,1,1
1,1,3
1,2,2
の3通り
2,1+1や1+1+1,1+2なので、1,1,1,2を除く。
考察
!1種類の数の場合
!1,1,1,…,1
!└ a個 ┘
!題意より、a=n
LET N=15
PRINT "1が";STR$(N);"個"
PRINT
!2種類の数の場合
!1がa個あるので、1からaまでの数はこれで表せるので、2番目の数はa+1である。
!1,1,…,1, a+1,a+1,…,a+1
!└ a個 ┘ └ b個 ┘
!題意より、a+(a+1)b=n ∴(a+1)(b+1)=n+1
!不定方程式を解く。
LET M=N+1
FOR A=2 TO M-1
IF MOD(M,A)=0 THEN !n+1の約数なら(1とn+1は除く)
LET B=M/A
PRINT "1が";STR$(A-1);"個、"; STR$(A);"が";STR$(B-1);"個"
END IF
NEXT A
PRINT
!3種類の数の場合
!1,1,…,1, a+1,a+1,…,a+1, (a+1)(b+1),(a+1)(b+1),…,(a+1)(b+1)=a+(a+1)b+1
!└ a個 ┘ └ b個 ┘ └ c個 ┘
!題意より、a+(a+1)b+(a+1)(b+1)c=n ∴(a+1)(b+1)(c+1)=n+1
!不定方程式を解く。
LET M=N+1
FOR A=2 TO M-1
IF MOD(M,A)=0 THEN !n+1の約数なら
FOR B=2 TO M/A-1
IF MOD(M/A,B)=0 THEN !(n+1)/aの約数なら
LET C=(M/A)/B
PRINT "1が";STR$(A-1);"個、";
PRINT STR$(A);"が";STR$(B-1);"個、";
PRINT STR$(A*B);"が";STR$(C-1);"個"
END IF
NEXT B
END IF
NEXT A
PRINT
!4種類の数の場合
!1,…,1, a+1,…,a+1, (a+1)(b+1),…,(a+1)(b+1), (a+b)(b+1)(c+1),…,(a+b)(b+1)(c+1)=a+(a+1)b+{a+(a+1)b+1}c+1
!└a個┘ └ b個 ┘ └ c個 ┘ └ d個 ┘
!題意より、a +(a+1)b +(a+1)(b+1)c +(a+1)(b+1)(c+1)d = n ∴(a+1)(b+1)(c+1)(d+1)=n+1
!不定方程式を解く。
LET M=N+1
FOR A=2 TO M-1
IF MOD(M,A)=0 THEN !n+1の約数なら
LET M1=M/A
FOR B=2 TO M1-1
IF MOD(M1,B)=0 THEN !(n+1)/aの約数なら
LET M2=M1/B
FOR C=2 TO M2-1
IF MOD(M2,C)=0 THEN !(n+1)/(ab)の約数なら
LET D=M2/C
PRINT "1が";STR$(A-1);"個、";
PRINT STR$(A);"が";STR$(B-1);"個、";
PRINT STR$(A*B);"が";STR$(C-1);"個、";
PRINT STR$(A*B*C);"が";STR$(D-1);"個"
END IF
NEXT C
END IF
NEXT B
END IF
NEXT A
PRINT
!5種類の数の場合
! :
! :
END
実行結果
1が15個
1が1個、2が7個
1が3個、4が3個
1が7個、8が1個
1が1個、2が1個、4が3個
1が1個、2が3個、8が1個
1が3個、4が1個、8が1個
1が1個、2が1個、4が1個、8が1個
|
|