标签:
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