λνΌ μμ ..... νμ΄λ νμ΄λ μ΄λ €μ΄ λλ μ ν .... μμ‘΄κ° λ¨μ΄λ¨λ¦¬λ μ ν
λνΌ λ¬Έμ λ₯Ό λ§μ΄ νμ΄λ³΄κ³ μμ§λ§, νμ΄λ₯Ό λ€μμ λλ μμ§ν μ΄ν΄κ° κ°λλ€. νμ§λ§, μμ§ κΉμ§λ μ€μ€λ‘ νμ΄λ³Ό λ, λνΌλ₯Ό μ μ©νλ λ°μλ μ κ²½νμ΄ λΈλ¦¬λ λ΄ λλ€. μ΄μ©κ² μ΅λκΉ? λͺ»νλ©΄ κ·Έ νμ΄μ λν ν΄μ€μ μ λλ‘ μ΅νκ³ , μ΄ν΄νκ³ . λ€μμ λͺ»νμ΄λ, λ κ²½νμ μλ€λ³΄λ©΄, λνΌλ₯Ό μ‘°κΈμ© λ μ ν μ μμ§ μμκΉμ?
μ°μ μ΄ κ³Όλͺ©μ μκ°νκΈ° μ μ μκ° κ³Όλͺ©μ λλ€. μ΄κ±° 보면 μ΄ν΄κ° ν κ°λλΌκ΅¬μ. κ±°κΈ°μ μ λ μ’ λ μ½λ¦°μ΄ μ μ©μΌλ‘ μκ°λ½μ μΉλ νμ΄λ₯Ό ν κ³νμ΄μμ. μ°μ λ³΄κ³ μ€μΈμ©
μ μ κ³Όλͺ© * νμ μμ² * : κ°μΈμ μΌλ‘ λΈλ‘κ·Έμ λμλ€λλ λͺ¨λ νμ΄λ₯Ό λ΄€μ§λ§, κ°μΈμ μΌλ‘ μ΄κ²λ§μ΄ μ λ₯Ό ꡬμν΄μ€ μ μμμ΅λλ€. λ€μ΄λ³΄μΈμ, μμμΌλ‘ λμ΄μμ΄μ λ§€μ° μ΄ν΄νκΈ° νΈνμ΄μ.
ν΅μ¬ μμ΄λμ΄ μ€λͺ π
1μ λ¨μλ§ μΌμ λ,
1,2,3,4,5,6,7,8,9,10μμ λ§λ€μ΄λ΄ λλ€.
κ²½μ°μ μκ° λͺ κ°μ§μ£ ?
λ€ ν κ°μ§μ£ ?
1μ λ¨μλ§ μ¨μ 1μ λ§λ€λ €λ©΄ 1κ°, 2μ λ§λ€λ €λ©΄ 2κ°, ... 10μ λ§λ€λ €λ©΄ 10κ° μ΄λ κ², λͺ©ν ~μμ λ§κ² 1μμ λμνλ©΄ λ©λλ€.
μ΄μ 2μ λ¨μλ₯Ό νλλ§ λ λμν΄λ³΄μ£ . ( <- μ΄κ² ν΅μ¬. μ μ λμ λ¨μλ₯Ό νλμ© λ λμν΄ λκ°λ κ±°μμ. ) λ¨ !! μ΄λ 2μ λ¨μλ₯Ό λμν κ²μ΄λ―λ‘, 1μ λ¨μλ§ μ¬μ©λ κ²½μ°μ μλ ν΄λΉλμ§ μμμ. λͺ μ¬νμΈμ!! <- μ΄ ν¬μΈνΈλ₯Ό μμ§ λ§μΈμ
λ λ²μ§Έ μ€μ 보μΈμ, μ΄μ 1μ λ¨μλ§ κ°μ§κ³ λ§λ κ²½μ°μ μ λ§κ³ , "1μ (&& and μ€λ) 2μ"μ λμν λμ κ²½μ°μ μλ₯Ό λ³΄κ² μ΅λλ€.
μ°μ 2μμΌλ‘ 1μμ λ§λ€ μλ μμ΄μ 0.
2μμ κΌ μ΄λ€κ³ νμ λ, 2μμ λ§λλ κ²½μ°μ μλ λͺκ°μ£ ? 2κ° μλλλ€. μ§μ€νμΈμ !! λ κ°λΌκ³ νμ λΆμ
1κ°μ£ . μλνλ©΄, μ΄μ 1μκ³Ό 2μμ λͺ¨λ μ¬μ©ν κ²½μ°μ μλ₯Ό κ³ λ €νκ³ μκΈ° λλ¬Έμ΄μμ.
3μμ λ§λ€λ €λ©΄μ? κ·ΈλΌ?
3μμ λ§λ€λ €λ©΄ νμ¬μ κ²½μ°, 2μμ 무쑰건 μ¨μΌνλκΉ, 2μμ 무쑰건 μ΄λ€κ³ μΉκ³ , κ·Έλ¬λ©΄ μ‘°ν©ν΄λ΄μΌν λμ΄, 1μλ§ λ¨μλμ? κ·Έμ΅Έ? μ΄μ μ΄ 1μμ
λ°©λ²1(1μλ§ μ°κΈ°)κ³Ό
λ°©λ²2(1μκ³Ό 2μμ λͺ¨λ μ°κΈ°)λ‘ λ§λ€ μ μλ κ²½μ°μ μ
λ€μ ν©μ ꡬν΄μ£Όλ©΄ λ©λλ€.
κ·Έλ λ€κ³ νλ©΄, λ°©λ²1( 1μλ§μΌλ‘ 1μμ λ§λλ κ²½μ°μ μ ) : 1κ°μ§
λ°©λ²2( 1μ 2μ λͺ¨λ λμν κ²½μ°μ μ ) : 0κ°μ§
λ₯Ό λν΄μ μ¨μ£Όλ©΄ λ©λλ€. 1μ΄μ£ . κ·Έλμ λ°λ‘ μ 2ν 3μ΄μ 1μ΄ λ€μ΄κ°λ κ²λλ€.
μ΄ μλ¦¬λ‘ μμ μ±μλ£μ΄λ΄μ !!
κ·ΈλΌ 1,2μ λͺ¨λ λμνμ¬ 4μμ λ§λ€λ €λ©΄?
μ°μ 무쑰건 2μμ μ¨μΌνλκΉ 2μμ μ νμ¬μ€λλ€. κ·ΈλΌ 4-2 => 2μμ λ°©λ²1κ³Ό λ°©λ²2λ‘ λ§λ€λ©΄ λ©λλ€.
κ·Έλ¬λ©΄, λ°©λ²1κ³Ό λ°©λ²2λ₯Ό λν΄μ, 2κ°μ§κ° λ©λλ€.
κ²°λ‘ : ν¨ν΄μ 무μμ΄λ€? μλ₯Ό λ€μ΄, 5μ λ¨μλ₯Ό κΌ ν¬ν¨νμ±λ‘, 1,2,5μ λ¨μλ‘ 10μμ λ§λ€λ €λ©΄? μ°μ 5μ λ¨μλ 무μ κΆ ν¬ν¨μ΄λ λΉΌμ£Όκ³ μμνλ€. ( κ·ΈλΌ 1μ λ§μΌλ‘ 5μ λ§λλ λ°©λ²1 / 1,2μ λ§μΌλ‘ 5μ λ§λλ λ°©λ²2 / 1,2,5μ λͺ¨λ μ¨μ 5μ λ§λλ λ°©λ²3 ) <- μ΄ λ°©λ² μΈ κ°μ§λ₯Ό λͺ¨λ λν΄μ€λμ !! μ΄κ±°μμ΅λλ€.
ν΄ ... μ νμμ΄ λλ μμ±λ κ²μ λλ€. μ΄μ μ½λλ‘ μ¨λ³΄μΈμ. μ΄μ κ±°μλ€ λ μ λλ¦° κ²μ λλ€. μ½λλ λ°μ μμ΄μ©.
numOfUnits, targetAmount = map( int, input().split() )
units = []
for _ in range(numOfUnits) :
units.append( int( input() ))
# λ κ°μ§ λνΌ μ΄μ
# prev_units_total
# dp
prev_cases_total = [0] * targetAmount
dp = [0] * targetAmount
firstUnit = units[0]
#
for idx in range( targetAmount ) :
if (idx+1) % firstUnit == 0 :
prev_cases_total[idx] = 1
else :
prev_cases_total[idx] = 0
#
for unit in units[1:] :
for idx in range(targetAmount) :
if (idx+1) < unit :
dp[idx] = 0
elif (idx+1) == unit :
dp[idx] = 1
else :
dp[idx] = dp[ ( idx - unit ) ] + prev_cases_total[ ( idx - unit ) ]
#
for k in range(targetAmount) :
prev_cases_total[k] = dp[k] + prev_cases_total[k]
#
print(prev_cases_total[-1])