题解 | #二十四点#

二十四点

https://ac.nowcoder.com/acm/contest/84773/H

from math import inf

def main():
    ans = [[inf]*5001 for _ in range(9)]
    for x,dp in enumerate(ans,1):
        for i in range(1,5):
            y = 10**i//9*x
            if y > 5000: break
            dp[y] = i
        for i in range(2,5001):
            dp[i] = min(dp[i],
                min(dp[i-j]+dp[j] for j in range(1,i//2+1)),
                min(dp[i//j]+dp[j] for j in range(1,int(i**0.5+1e-8)+1) if i % j == 0)
            )
    for _ in range(int(input())):
        x,y = map(int,input().split())
        z = ans[x-1][y]
        print(z if z != inf else -1)

main()

全部评论

相关推荐

阿武同学:基本信息保留前面三行,其他的可以全部删掉,邮箱最重要的你没写,主修课程精简到8个以内,实习里面2/3/4都是水内容的,非要写的话建议两到三句话,项目经历排版优化下,自我评价缩到三行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务