Module: karma


Problem

1/8

çift ​​dize hash

Theory Click to read/hide

Error

Problem

Size t sorgu verilir, bunların her birinde size küçük Latin harflerinden oluşan bir dizi s, bir sayı p ve bir sayı modu verilir.
Her sorgu için, her harfin çoğaltıldığı s dizisi olan dizenin bir polinom karma modulo taban p'sini hesaplayın. Yani, s = "isaac" ise, "iissaaaacc" dizesinden hash'i hesaplamanız gerekir.

Giriş:
İlk satır, istek sayısı olan t sayısını içerir.
Ardından, her biri boşlukla ayrılmış s (1 <= |s| <= 20), p (1 <= p <= 105) ve mod ( 1) içeren t satır vardır. <= mod <= 108).

Çıktı:
Sorgulara verilen yanıtları her biri ayrı bir satırda yazdırın.

Örnek:
 
Giriş Çıktı
2
isaac 12345 87654321
Newton 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!