在本题中,你可以使用以下代码,并调用 divs(a, b) 以求出 对 取模的结果。你需要保证 且 :
int divs(int a, int b, int p = 1e9 + 7)
{
if (b % a == 0) return b / a;
int x = divs(p % a, a - b % a, a);
return (1ll * x * p + b) / a;
}
众所周知,std::cc_hash_table 哈希表的原理是:对于每个可能的哈希值,当该哈希值的元素被插入多个时,将它们串成一个链表(新元素加在链表头部),查询时从对应哈希值的链表头部开始逐个扫描,直至找到待查询的元素,其中待查询的元素也需要扫描一次。
现有一个接受 种哈希值的 std::cc_hash_table 哈希表,向哈希表插入 个元素后查询 次,插入的元素取到各哈希值的概率相等,各个元素被查询的概率也相等,所有 个操作互相独立,那么 std::cc_hash_table 哈希表在 个查询中对元素的总扫描次数的期望是多少?
答案对 取模。