Module: ハッシュ化


Problem

1/8

二重文字列ハッシュ

Theory Click to read/hide

Error

Problem

t 個のクエリが与えられ、それぞれにラテン語の小文字で構成される文字列 s、数値 p、および数値 mod が与えられます。
各クエリについて、各文字が重複する文字列 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!