C++ 散列与模拟除法

C++ 散列与模拟除法,c++,c,algorithm,hash,modular-arithmetic,C++,C,Algorithm,Hash,Modular Arithmetic,设h(y)为定义为(a*y+b)mod m的函数。因此h(y)可以从0到m-1取值。 现在我们得到了7个整数-a、b、x、n、c、d、m。我们的任务是找到h(x),h(x+1),h(x+2)…h(x+n)的总计数,使得h(x+i)的值在[c,d]的范围内。其中0这不是一个特别强的散列。这个问题唯一困难的部分是使用单字母变量的钝角表示法,并将问题指定为7元组 x的每一个增量都将h(x)增加a。因此,沿着x从c到d的总距离就是(d-c)/a。为篱笆柱问题添加一个,或者为了理智起见,将问题指定为半开放

h(y)
为定义为
(a*y+b)mod m
的函数。因此
h(y)
可以从0到m-1取值

现在我们得到了7个整数-
a、b、x、n、c、d、m
。我们的任务是找到
h(x),h(x+1),h(x+2)…h(x+n)
的总计数,使得
h(x+i)
的值在
[c,d]
的范围内。其中
0这不是一个特别强的散列。这个问题唯一困难的部分是使用单字母变量的钝角表示法,并将问题指定为7元组


x
的每一个增量都将
h(x)
增加
a
。因此,沿着
x
c
d
的总距离就是
(d-c)/a
。为篱笆柱问题添加一个,或者为了理智起见,将问题指定为半开放范围。

您自己尝试过吗?
1 ≤ m ≤ 10^15, c ≤ d < m, a,b < m, x+n ≤ 10^15, and a*(x+n) + b ≤ 10^15