#!/usr/bin/python #sha0@badhcecksum.net import sys class Combinatoria: #Permutaciones def P(self,n): res=1 for i in range(1,n+1): res *= i return res #Combinaciones (no importa el orden) def C(self,n,r): return self.P(n) / ( self.P(r) * self.P(n-r) ) #Combinaciones con repeticion (no importa el orden) def CR(self,n,r): return self.C(n+r-1,r-1) #Variaciones (importa el orden) def V(self,n,r): return self.P(n) / self.P(n-r) #Variaciones con repeticion (importa el orden) def VR(self,n,r): return pow(n,r) #Interfaz def calc(self,mode,n,r): if mode == 'P': print 'P(n)=P('+str(n)+')='+str(n)+'!='+str(c.P(n)) if mode == 'C': print 'C(n,r)=C('+str(n)+','+str(r)+')='+str(c.C(n,r)) if mode == 'CR': print 'CR(n,r)=CR('+str(n)+','+str(r)+')='+str(c.CR(n,r)) if mode == 'V': print 'V(n,r)=V('+str(n)+','+str(r)+')='+str(c.V(n,r)) if mode == 'VR': print 'VR(n,r)=VR('+str(n)+','+str(r)+')='+str(c.VR(n,r)) if len(sys.argv) != 4: print 'uso: '+sys.argv[0]+' ' sys.exit(-1) mode=sys.argv[1] n=int(sys.argv[2]) r=int(sys.argv[3]) c=Combinatoria() c.calc(mode,n,r)