社区讨论

shabi选手刚学OI,问个问题

P2624[HNOI2008] 明明的烦恼参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mi7rtokv
此快照首次捕获于
2025/11/21 02:34
4 个月前
此快照最后确认于
2025/11/21 02:34
4 个月前
查看原帖
这个是我的AC代码。
CPP
n=int(input())
a=[0]*(n+5)
fac=[0]*(n+5)
fac[0]=1
fre=0
dlen=0
for i in range(1,n+1):
	fac[i]=fac[i-1]*i
for i in range(1,n+1):
	a[i]=int(input())
	if a[i]==-1:
		fre=fre+1
	else:
		dlen=dlen+a[i]-1
if dlen>n-2:
	print("0")
	exit()
ans=fac[n-2]//fac[n-2-dlen]
for i in range(1,n+1):
	if a[i]!=-1:
		ans=ans//fac[a[i]-1]
for i in range(0,n-2-dlen):
	ans=ans*fre
print(int(ans))
exit()
为什么这里必须写//而不能写/啊。
百度了一下,//是整除,但是这里都是整数而且必定能整除应该没影响吧。

回复

2 条回复,欢迎继续交流。

正在加载回复...