#include <iostream> //#include <conio.h> #include <bitset>; using namespace std; bitset<20*1000000> Bit; int Count=0; void DecodeChar(int aPos, char aChar){ aPos *= 5; int oValue=aChar-'a'; int oIndex=0; while(oValue>0){ Bit.set(aPos+oIndex,oValue%2); oValue=oValue/2; oIndex++; } } void PrintBit(int aCount){ cout<<"PrintBit="<<aCount<<endl; int oCount = aCount*5; for(int oLoop=0;oLoop<oCount;oLoop++){ int oBit=Bit.test(oLoop); cout << oBit; } cout<<endl; } string Compare(){ int oCount = Count / 2 + 1; bool oTest = true; for(int oLoop=0;oLoop<oCount;oLoop++){ for(int oIndex=0;oIndex<5;oIndex++){ if(Bit.test((oLoop*5)+oIndex)!=Bit.test((Count-oLoop-1)*5+oIndex)){ oTest = false; break; }; }; if(!oTest){ break; } }; if(oTest){ return "TAK"; }else{ return "NIE"; } } void ReadLine(){ int oCount = 0; char ch; while((cin >> ch)){ DecodeChar(oCount,ch); // PrintBit(oCount+1); oCount++; } Count = oCount ; } void ReadFor(int aCount){ for(int oLoop=0;oLoop<aCount;oLoop++){ DecodeChar(oLoop, cin.get()); // PrintBit(aCount+1); // cout<<oLoop<<endl; }; } void ReadData(){ (cin >> Count).get(); if(Count==0){ ReadLine(); }else{ ReadFor(Count); // PrintBit(Count); } } int main() { ReadData(); cout << Compare()<<endl; return 0; } /* 5 kajak */
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | #include <iostream> //#include <conio.h> #include <bitset>; using namespace std; bitset<20*1000000> Bit; int Count=0; void DecodeChar(int aPos, char aChar){ aPos *= 5; int oValue=aChar-'a'; int oIndex=0; while(oValue>0){ Bit.set(aPos+oIndex,oValue%2); oValue=oValue/2; oIndex++; } } void PrintBit(int aCount){ cout<<"PrintBit="<<aCount<<endl; int oCount = aCount*5; for(int oLoop=0;oLoop<oCount;oLoop++){ int oBit=Bit.test(oLoop); cout << oBit; } cout<<endl; } string Compare(){ int oCount = Count / 2 + 1; bool oTest = true; for(int oLoop=0;oLoop<oCount;oLoop++){ for(int oIndex=0;oIndex<5;oIndex++){ if(Bit.test((oLoop*5)+oIndex)!=Bit.test((Count-oLoop-1)*5+oIndex)){ oTest = false; break; }; }; if(!oTest){ break; } }; if(oTest){ return "TAK"; }else{ return "NIE"; } } void ReadLine(){ int oCount = 0; char ch; while((cin >> ch)){ DecodeChar(oCount,ch); // PrintBit(oCount+1); oCount++; } Count = oCount ; } void ReadFor(int aCount){ for(int oLoop=0;oLoop<aCount;oLoop++){ DecodeChar(oLoop, cin.get()); // PrintBit(aCount+1); // cout<<oLoop<<endl; }; } void ReadData(){ (cin >> Count).get(); if(Count==0){ ReadLine(); }else{ ReadFor(Count); // PrintBit(Count); } } int main() { ReadData(); cout << Compare()<<endl; return 0; } /* 5 kajak */ |