小红的数位操作

小红拿到了一个正整数n,她可以进行若干次操作,每次操作将选择一个数位,使其加1或者减1。不过有两条限制:

1、每个数位最多只能操作一次。

2、如果选择的是9,则无法进行加1操作。如果选择的是0,则无法进行减1操作。

小红希望最终n成为p的倍数,你能帮小红输出操作结束后的整数n吗?

输入描述
两个正整数n和p。

1≤n,p≤10^13

输出描述
如果误解,请输出-1。假设有多解的时候,输出任意解即可。(如果操作包含前导零,请将前导零一起输出)

n, p = input().split()
flag = False
def dfs(s, i):
    if int(''.join(s)) % int(''.join(p)) == 0:
        print(''.join(s))
        global flag
        flag = True
    for i in range(i+1,len(s)):
        if flag: 
            break
        if s[i] == '9':
            s[i] = '8'
            dfs(s,i)
            s[i] = '9'
        elif s[i] == '0':
            s[i] = '1'
            dfs(s,i)
            s[i] = '0'
        else:
            s[i] = str(int(s[i])+1)
            dfs(s,i)
            s[i] = str(int(s[i])-2)
            dfs(s,i)
            s[i] = str(int(s[i])+1)

         
if int(n) // int(p) == 0 :
    print([0]*len(n))
else:
    i = -1
    n = list(n)
    dfs(n,i)
if not flag:
    print('-1')
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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