题目链接:
http://codeforces.com/problemset/problem/745/A
题解:
题目大意:
给出一个字符串,每次只能将最后的字母放到最前面,看能不能构成新的字符串,问你最后能构成几个字符串(包括了原来的字符串)。
水题,map判下重就行了。
代码:
#include <cstdio>
#include <map>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define met(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
const int maxn = 50+10;
char s1[maxn],s2[maxn];
map<string,int> mp;
int main()
{
scanf("%s",s1);
int len=strlen(s1);
int cnt=0;
mp.clear();
for(int i=0;i<len;i++)
{
for(int j=0;j<len;j++)
s2[j]=s1[(j+i)%len];
if(mp[s2]==0)
{
mp[s2]=1;
cnt++;
}
}
printf("%d\n",cnt);
}