标签:
4 0110 1100 1001 0011 4 1010 0101 1000 0001
1 2
#include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<string> #include<iostream> #include<queue> #include<cmath> #include<map> #include<stack> #include<set> using namespace std; #define REPF( i , a , b ) for ( int i = a ; i <= b ; ++ i ) #define REP( i , n ) for ( int i = 0 ; i < n ; ++ i ) #define CLEAR( a , x ) memset ( a , x , sizeof a ) typedef long long LL; typedef pair<int,int>pil; const int INF = 0x3f3f3f3f; const int maxn=1e4+100; char str[110]; set<string>s; int n; int GetMin(char s[]) { int len=strlen(str); int i=0,j=1,k; while(i<len&&j<len) { for(k=0;k<len;k++) if(str[(i+k)%len]!=str[(j+k)%len]) break; if(str[(i+k)%len]>str[(j+k)%len]) i+=k+1; else j+=k+1; if(i==j) j++; } return min(i,j); } int main() { char temp[110]; while(~scanf("%d",&n)) { s.clear(); REP(i,n) { scanf("%s",str);int cnt=0; int pos=GetMin(str); int len=strlen(str); for(int j=pos;j<len;j++) temp[cnt++]=str[j]; for(int j=0;j<pos;j++) temp[cnt++]=str[j]; temp[cnt]='\0'; s.insert(temp); } printf("%d\n",s.size()); } return 0; }
标签:
原文地址:http://blog.csdn.net/u013582254/article/details/44037091