| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | import math#获取阶乘列表def jieChen(n):    myArray = {};    myArray[0] = 1;    i = 1;    while i<n :        myArray[i] = (i+1)*myArray[i-1];        i = i+1    return myArray;#获取指定数的阶乘def jieChenNumber(n):    if(n <= 1):        return 1;    return jieChen(n)[n-1];#辗转相除法进行进制转化def changeInt2Str(i,m):    if(not isinstance(m,int)):        print("m is not int",m)        return    if(m*i == 0):        return "0";    result = "";i    myarray = {};    while(i>=m):        myarray[myarray.__len__()] = i%m        i=int(i/m)    if(i!=0):        myarray[myarray.__len__()] = i    for item in myarray :        result=str(myarray[item])+result    return result#获取组合数列表def getAllArray(m,n):    allArray = {}    max = math.pow(m,n)    index = 0;    while (index < max):        itemIndex = changeInt2Str(index,m)        while(itemIndex.__len__()<n):            itemIndex = "0"+itemIndex        allArray[index]=itemIndex        index = index+1    print(allArray)    return allArray#获取组合数列表的排列总数def getAllArrayNumber(m,n):    total = 0    allArray = getAllArray(m,n)    for item in allArray:        total = getitemIndexArrayNumber(allArray[item],n)+total        print("total=",total)    return total#获取单个组合的各边重复项def getitemIndexArray(itemIndex,n):    a = {};    for item in range(n):        index = 0;        indexNum = 0;        while(index < n):            if(itemIndex[index] == str(item)):                indexNum = indexNum + 1            index = index+1        a[item]=indexNum    print("a=",a)    return a#获取单个组合的各边重复项的排列数def getitemIndexArrayNumber(itemIndex,n):    itemIndexArrayNumber = 0;    a = getitemIndexArray(itemIndex,n)    for item in a:        intItem = int(a[item])        if(intItem > 1):            itemIndexArrayNumber = jieChenNumber(intItem)+itemIndexArrayNumber    if(itemIndexArrayNumber == 0):        itemIndexArrayNumber = 1    return itemIndexArrayNumber# result = changeInt2Str(14,3);# print(result)# getAllArray(4,3)# getitemIndexArray("51243",5)# number = getitemIndexArrayNumber("51243",5)# print(number)getAllArrayNumber(4,2)
 |