You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
552 B
Python
41 lines
552 B
Python
def fast_pow(a,b):
|
|
ans=1
|
|
while b:
|
|
if(b%2==1):
|
|
ans*=a
|
|
a*=a
|
|
b/=2
|
|
return ans
|
|
frac=[1]
|
|
for i in range(1,1001):
|
|
frac.append(i*frac[-1])
|
|
n=(int)(input())
|
|
m=0
|
|
arr=[]
|
|
for i in range(0,n):
|
|
arr.append((int)(input()))
|
|
ans=0
|
|
if n==1:
|
|
if arr[0]==0:
|
|
ans=1
|
|
else:
|
|
ans=0
|
|
else:
|
|
ans=frac[n-2]
|
|
left=n-2
|
|
for i in arr:
|
|
if i == -1:
|
|
m+=1
|
|
elif i==0:
|
|
ans=0
|
|
left=0
|
|
break
|
|
else:
|
|
ans/=frac[i-1]
|
|
left-=i-1
|
|
if m<2:
|
|
ans=0
|
|
else:
|
|
ans/=frac[left]
|
|
ans*=fast_pow(m,left)
|
|
print ans |