#include<bits/stdc++.h> using namespace std; long long hasz1,hasz2,hasz3,hasz4,hasz5,hasz6,n,pot,pot1,pot2; const long long mod=1E9+103,mod1=1E9+223,mod2=1E9+321,prw=29,prw1=31; char a; int main() { ios_base::sync_with_stdio(0); cin>>n; pot=1; pot1=1; pot2=1; while(cin>>a) { hasz1=(hasz1+a*pot)%mod; hasz2=(hasz2*prw+a)%mod; pot=(pot*prw)%mod; hasz3=(hasz3+a*pot1)%mod1; hasz4=(hasz4*prw+a)%mod1; pot1=(pot1*prw)%mod1; hasz5=(hasz5+a*pot2)%mod2; hasz6=(hasz6*prw1+a)%mod2; pot2=(pot2*prw1)%mod2; } if(hasz1==hasz2&&hasz3==hasz4&&hasz5==hasz6)cout<<"TAK"; else cout<<"NIE"; }
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 | #include<bits/stdc++.h> using namespace std; long long hasz1,hasz2,hasz3,hasz4,hasz5,hasz6,n,pot,pot1,pot2; const long long mod=1E9+103,mod1=1E9+223,mod2=1E9+321,prw=29,prw1=31; char a; int main() { ios_base::sync_with_stdio(0); cin>>n; pot=1; pot1=1; pot2=1; while(cin>>a) { hasz1=(hasz1+a*pot)%mod; hasz2=(hasz2*prw+a)%mod; pot=(pot*prw)%mod; hasz3=(hasz3+a*pot1)%mod1; hasz4=(hasz4*prw+a)%mod1; pot1=(pot1*prw)%mod1; hasz5=(hasz5+a*pot2)%mod2; hasz6=(hasz6*prw1+a)%mod2; pot2=(pot2*prw1)%mod2; } if(hasz1==hasz2&&hasz3==hasz4&&hasz5==hasz6)cout<<"TAK"; else cout<<"NIE"; } |