您的位置:首页 > 其它

Hongcow Learns the Cyclic Shift CodeForces - 745A

2017-07-26 07:59 1096 查看
Hongcow is learning to spell! One day, his teacher gives him a word that he needs to learn to spell. Being a dutiful student, he immediately learns how to spell the word.

Hongcow has decided to try to make new words from this one. He starts by taking the word he just learned how to spell, and moves the last character of the word to the beginning of the word. He calls this a cyclic shift.
He can apply cyclic shift many times. For example, consecutively applying cyclic shift operation to the word "abracadabra" Hongcow will get words "aabracadabr", "raabracadab" and so on.

Hongcow is now wondering how many distinct words he can generate by doing the cyclic shift arbitrarily many times. The initial string is also counted.

Input

The first line of input will be a single string s (1 ≤ |s| ≤ 50), the word Hongcow initially learns how to spell. The string s consists only
of lowercase English letters ('a'–'z').

Output

Output a single integer equal to the number of distinct strings that Hongcow can obtain by applying the cyclic shift arbitrarily many times to the given string.

Example

Input
abcd


Output
4


Input
bbb


Output
1


Input
yzyz


Output
2


Note

For the first sample, the strings Hongcow can generate are "abcd", "dabc", "cdab", and "bcda".

For the second sample, no matter how many times Hongcow does the cyclic shift, Hongcow can only generate "bbb".

For the third sample, the two strings Hongcow can generate are "yzyz" and "zyzy".

题意:给你个一个长度数n,然后接着一个字符串,规则是每次把最后一个放到最前面,求有多少个不同的数列,

分析:这是自己写的,比较菜鸡,我是先把所有可能出现的情况存在了一个数组中,然后遍历这个数组,比较每个项,如果有相同的,则总情况数减一。

#include <cstdio>
#include <algorithm>
#include <iostream>
#include <queue>
#include <string.h>
using namespace std;
int main()
{
char a[100];
char c[100][100];
string aa,bb;
memset(c,0,sizeof(c));
gets(a);
int b=strlen(a);
int k=0;
for(int i=0; i<b; i++)
{
int t=a[0];
for(int j=0; j<b-1; j++)
{
a[j]=a[j+1];
}
a[b-1]=t;
sprintf(c[k++],"%s",a);
}
int sum=k;
int u=0;
for(int o=0; o<k-1; o++)
{
aa=c[o];
for(int j=o+1;j<k;j++)
{
bb=c[j];
if(aa==bb)
{
sum--;
break;
}

}
}
printf("%d\n",sum);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: