#include <iostream> using namespace std; int main() { //ios_base::sync_with_stdio(0); //cin.tie(0); long long hp1=0, hp2=0, ht1=0, ht2=0, pod=1019, mod1=1000000033, mod2=1000000009, pot1=1, pot2=1; int n; cin >> n; char c=getchar_unlocked(); c=getchar_unlocked(); while (c!=EOF && c!='\n') { //cout << c << "\n"; int lit=c-'a'+1; hp1*=pod; hp1+=lit; hp1%=mod1; hp2*=pod; hp2+=lit; hp2%=mod2; ht1+=lit*pot1; ht1%=mod1; ht2+=lit*pot2; ht2%=mod2; pot1*=pod; pot1%=mod1; pot2*=pod; pot2%=mod2; c=getchar_unlocked(); } if (hp1==ht1 && hp2==ht2) cout << "TAK\n"; else cout << "NIE\n"; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include <iostream> using namespace std; int main() { //ios_base::sync_with_stdio(0); //cin.tie(0); long long hp1=0, hp2=0, ht1=0, ht2=0, pod=1019, mod1=1000000033, mod2=1000000009, pot1=1, pot2=1; int n; cin >> n; char c=getchar_unlocked(); c=getchar_unlocked(); while (c!=EOF && c!='\n') { //cout << c << "\n"; int lit=c-'a'+1; hp1*=pod; hp1+=lit; hp1%=mod1; hp2*=pod; hp2+=lit; hp2%=mod2; ht1+=lit*pot1; ht1%=mod1; ht2+=lit*pot2; ht2%=mod2; pot1*=pod; pot1%=mod1; pot2*=pod; pot2%=mod2; c=getchar_unlocked(); } if (hp1==ht1 && hp2==ht2) cout << "TAK\n"; else cout << "NIE\n"; } |