我已经在usaco上解决了问题。我说到了我需要证明的一点:
如果我们有一组S
包含数字(0,1,2,3,...P-1)
,其中P
是素数。如果我们将此集* X [where X and P are co-primes (relative primes)]
相乘,我们将得到相同的集S
,可能会有不同的排列,但我们会得到相同的元素。乘法后,我们将为集合中的每个元素取mod P
。
这是任何定理,还是可以证明与此有关?
答案 0 :(得分:3)
假设i
中有j
和(0,1,2,3,...P-1)
,lambda a: (a*x)%p
的值相同。
然后
i*x = j*x mod p
=> i*x - j*x = 0 mod p
=> (i - j)*x = 0 mod p
所以p
除以(i-j)*x
。现在p
和x
是合格的,因此p
不会划分x
。所以p | i - j
现在请注意,i
和j
都小于p
。所以i - j
也小于p
。因此p
不能除i - j
,除非它是zero
。所以i - j = 0
=> i = j
。
因此,如果i
和j
相同,i = j
。因此,当i != j
,i
和j
产生不同的整数时。因此,对于i
中的每个(0,1,2,3,...P-1)
,lambda a: (a*x)%p
会产生不同的整数。因此,如果您收集集合中的整数,则该集合必须具有p
个元素。但是所有整数必须小于p
。因此,该集合包含(0,1,2,...P-1)
。
备注:p
不一定需要是素数。只需p
和x
即可。