

Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
`#Check`
#include<bits/stdc++.h>
using namespace std;
long long n, m, k, x, d[100005];
string tmp;
long long binpow(long long a, long long b)
{
if(b == 0) return 1;
long long tmp = binpow(a, b/2);
if(b % 2 == 0) return ((tmp % k) * (tmp % k)) % k;
else return ((((tmp % k) * (tmp % k)) % k) * (a % k)) % k;
}
long long so(string s){
long long so = 0;
for(int i = 0; i < s.size(); i++){
so = (so * 10 + (s[i] - '0')) % k;
}
return so;
}
int main()
{
cin >> n >> m >> k;
long long sum = 0, res = 0;
d[0] = 1;
for(int i = 1; i <= n; i++){
cin >> tmp;
x = so(tmp);
sum += binpow(x, m);
sum %= k;
res += d[sum];
d[sum]++;
}
cout << res;
return 0;
}
Hãy giúp mọi người biết câu trả lời này thế nào?

#include <bits/stdc++.h>
using namespace std;
long long tinh(long long n,long long m, long long k) {
long long r=1;
while (m>0) {
if (m%2) r=(r*n)%k;
n=(n*n)%k;
m/=2;
}
return r;
}
int main() {
long long n;
long long m,k;
cin>>n>>m>>k;
vector<string> a(n);
for (long long i=0;i<n;++i) cin>>a[i];
unordered_map<long long,long long> b{{0,1}};
long long t=0,dem=0;
for (long long i=0;i<n;++i) {
long long u=0;
for (char c:a[i]) u=(u*10+(c-'0'))%k;
long long p=tinh(u,m,k);
t=(t+p)%k;
dem+=b[t]++;
}
cout<<dem;
return 0;
}
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin
1428
25173
482
Ờ.. nhân ấn độ à