- gcd=lambda x,y:gcd(y,x%y)if y else x
- class A:
- def __init__(self,x,y):
- d=gcd(x,y)
- self.x,self.y=x/d,y/d
- def __str__(self):
- return'%d/%d'%(self.x,self.y)
- def __add__(self,n):
- if type(n)==int:return A(self.x+self.y*n,self.y)
- return A(self.x*n.y+self.y*n.x,self.y*n.y)
- def __mul__(self,n):
- if type(n)==int:return A(self.x*n,self.y)
- return A(self.x*n.x,self.y*n.y)
- def __div__(self,n):
- if type(n)==int:return A(self.x,self.y*n)
- return A(self.x*n.y,self.y*n.x)
- __radd__=__add__
- __rmul__=__mul__
- def f(x,n):
- if not n:return A(x,10)
- s=0
- for i in range(2):
- for j in range(2):
- s+=f(x-i+j,n-1)*A(x if i else 10-x,10)*A(10-x+i if j else 1+x-i,11)
- return s
- print f(3,2)
- # 443/1210
复制代码 |