招行模13的题目思路。。没提交,能过测试

对字符串倒序,然后dp[i][j]表示第i个字符串,模为j的种类数

s="???5"
s=s[::-1]
dp=[[0 for i in range(13)] for j in range(len(s)+1)]

ti=[1,10,100]
flag=1
dp[0][0]=1
i=1
while i<len(s)+1:
    if s[i-1]=='?':
        for d in range(10):
            ls=(d*ti[i%3-1])%13*flag
            for j in range(13):
                if ls>=j:
                    k=(j+13-ls)%13
                else:
                    k=(j-ls)%13
                dp[i][j]+=dp[i-1][k]
    else:
        ls=(int(s[i-1])*ti[i%3-1])%13*flag
        for j in range(13):
            if ls>=j:
                k=(j+13-ls)%13
            else:
                k=(j-ls)%13
            dp[i][j]=dp[i-1][k]
            
    if i%3==0:
        flag=-flag
    i+=1
        
print (dp[-1][5])



#GE##笔试题目##秋招#
全部评论
def get_count(str_num): min_ = int(str_num.replace("?", "0")) max_ = int(str_num.replace("?", "9")) print(min_, max_) for i in range(min_, max_): if (i - 5) % 13 == 0: first_ = i break print(first_) count = (max_ - first_) // 13 + 1 print(count)
点赞 回复 分享
发布于 2019-09-15 22:42
为什么我觉应该是这样。。。。。
点赞 回复 分享
发布于 2019-09-15 22:43
友塔游戏
校招火热招聘中
官网直投
???5   对应 77  感觉好像错的, 应该是 ??5   对应  77
点赞 回复 分享
发布于 2019-09-15 22:43
求解答
点赞 回复 分享
发布于 2019-09-15 22:44

相关推荐

1 2 评论
分享
牛客网
牛客企业服务