Module: 哈希


Problem

1/8

双字符串哈希

Theory Click to read/hide

Error

Problem

给定 t 个查询,在每个查询中给定一个由小写拉丁字母、数字 p 和数字 mod 组成的字符串 s。
对于每个查询,计算字符串 s 的多项式哈希模底 p,其中每个字母都是重复的。也就是说,如果 s = "isaac",那么你需要从字符串 "iissaaaacc" 计算散列。

输入:
第一行包含数字 t - 请求数。
然后有 t 行,每行包含以空格分隔的 s (1 <= |s| <= 20)、p (1 <= p <= 105) 和 mod ( 1 <= mod <= 108).

输出:
打印对查询的响应,每个都在单独的行上。

示例:
  <正文>
输入 输出
2
艾萨克 12345 87654321
牛顿 54321 12345678
8829000
9632318
Write the program below
#include<bits/stdc++.h>
using namespace std;

long long calc_hash(const string& s, long long p, long long mod) {
	long long h = 0;
	for (int i = 0; i < s.size(); i++) {
		h = 
	     
}
	return h;
}

int main()
{
	int t;
	cin >> t;

	while (t--) {
		string s;
		long long p, mod;
		cin >> s >> p >> mod;
		cout << calc_hash(s, p, mod) << '\n';
	}

	return 0;
}
     

     

Program check result

To check the solution of the problem, you need to register or log in!