123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- 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)
- #获取单个组合的各边重复项
- 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)
- 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
- return itemIndexArrayNumber
- # result = changeInt2Str(14,3);
- # print(result)
- # getAllArray(4,3)
- # getitemIndexArray("01200",5)
- number = getitemIndexArrayNumber("01200",5)
- print(number)
|