(Python)
从functools导入lru_cache
从symp.combinatorics.partitions导入IntegerPartition
从sympy.utilities.可交互导入分区,multiset_permutations
@lru_cache(最大大小=无)
def intpartition(n,m):返回元组(''.join(str(d)for d in IntegerPartition(p).partition+[0]*(m-s)for s,p in partitions(n,k=9,m=m,size=True))
l、 c,nmax,k=9*n,0,0,10**(n-1)
当l>c时:
对于intpartition(l,n)中的p:
对于多重置换(p)中的q:
w=int(''.join(q))
如果w>=k:
wr=w%l
如果wr>c:
c=wr
nmax=w(最大值)
如果wr==c且nmax<w:
nmax=w(最大值)
l-=1
返回nmax