AcWing 1308. 方程的解
原题链接
中等
作者:
qing123
,
2024-04-16 11:45:35
,
所有人可见
,
阅读 7
"""
这是一个组合计数问题
佳佳碰到了一个难题,请你来帮忙解决。
对于不定方程 a1+a2+⋯+ak−1+ak=g(x)
,其中 k≥1 且 k∈N∗,x 是正整数,g(x)=x^xmod1000(即 xx 除以 1000 的余数),x,k
是给定的数。
我们要求的是这个不定方程的正整数解组数。
输入x,k
要求正整数解,所以,每个ak都是正数。
问题变为g(x)个数,怎么放到 k 个数种。零g(x) = m
即 ***** 放入隔板。 要分出k个数,隔板k-1个,最边上未知不选,所以是 C(m-1 ,k-1)
利用C(n,k) = C(n-1,k)+C(n-1,k-1)的形状
"""
N = 1010
def qmi(a,b,p):
res = 1
while b:
if b&1:
res = (res *a )%p
a = (a* a) %p
b = b>>1
return res
C = [[ 0 for _ in range(N)]for _ in range(N)]
C[0][0] = 1
k,x = map(int,input().split())
m = qmi(x,x,1000)
for i in range(1,N):
for j in range(i+1):
if j==0:
C[i][j] = 1
else:
C[i][j] = C[i-1][j]+C[i-1][j-1]
# print(m,k)
print(C[m-1][k-1]) # 3 ,2 m = 4 , k = 2