问题描述
YBH数学很差,她数数时分不清4,5和8;我们定义YBH[i]为YBH的计数法对应的i的值。
规定:YBH[4] = 5,YBH[5] = 8;YBH[i]运算规则如下:
① YBH[i+j] = YBH[i] + YBH[j]
② YBH[i*j] = YBH[i] * YBH[j]
我们会发现,用不同方法算出的YBH[i]的值是不同的,例如:当i=20时,
YBH[20] = 5*YBH[4] = 25;
YBH[20] = 4*YBH[5] = 32;
YBH[20] = YBH[4] * YBH[5] = 40;
......
我们规定:F[i]为YBH[i]的最大值,现在请你编写一个程序,输入一个数n,输出F[n]的值,若F[n]没有意义,输出-1。
输入格式
一个数n(8 <= n <= 1000)
输出格式
输出F[n]的值.
样例输入
20
样例输出
40
样例输入
11
样例输出
-1
数据规模和约定
8 <= n <= 1000
尝试解答:(这个解答平台没有给通过😢😢😢 但是尝试了一下感觉测试点是对的,如果有大佬可以解答一下,不胜感激🤞😶🌫️
import math
n=int(input())
dp= [-1 for i in range (1001)]
dp[4]=5
dp[5]=8
for i in range(6,n+1):
a1=a2=a3=a4=-1
if dp[i-4]!=-1:
a1=dp[i-4]+dp[4]
if dp[i-5]!=-1:
a2=dp[i-5]+dp[5]
if i%4==0 and dp[i//4]!=-1:
a3=dp[i//4]*dp[4]
if i%5==0 and dp[i//5]!=-1:
a4=dp[i//5]*dp[5]
dp[i]=max(a1,a2,a3,a4)
print(dp[n])