#include<cstdio> #include<cmath> #include<algorithm> #include<utility> #include<iostream> #include<string> using namespace std; const long long mod=1e9+9; const long long mod2=1e9+21; string tab; int n; char znak; long long hasz1,hasz2,hasz5,hasz6,p=41,p2=43; long long potega=1,potega2=1; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; while(cin>>znak){ hasz1=(hasz1+znak*potega%mod)%mod; hasz2=(hasz2*p%mod+znak)%mod; hasz5=(hasz5+znak*potega2%mod2)%mod2; hasz6=(hasz6*p2%mod2+znak)%mod2; potega=(potega%mod*p)%mod; potega2=(potega2%mod2*p2)%mod2; } if(hasz1==hasz2&&hasz5==hasz6){ cout<<"TAK"<<'\n'; } else cout<<"NIE"<<'\n'; return 0; }
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 | #include<cstdio> #include<cmath> #include<algorithm> #include<utility> #include<iostream> #include<string> using namespace std; const long long mod=1e9+9; const long long mod2=1e9+21; string tab; int n; char znak; long long hasz1,hasz2,hasz5,hasz6,p=41,p2=43; long long potega=1,potega2=1; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; while(cin>>znak){ hasz1=(hasz1+znak*potega%mod)%mod; hasz2=(hasz2*p%mod+znak)%mod; hasz5=(hasz5+znak*potega2%mod2)%mod2; hasz6=(hasz6*p2%mod2+znak)%mod2; potega=(potega%mod*p)%mod; potega2=(potega2%mod2*p2)%mod2; } if(hasz1==hasz2&&hasz5==hasz6){ cout<<"TAK"<<'\n'; } else cout<<"NIE"<<'\n'; return 0; } |