Problem:
Score : 200 points

Problem Statement

A string S of an odd length is said to be a strong palindrome if and only if all of the following conditions are satisfied:

S is a palindrome.

Let N be the length of S. The string formed by the 1-st through ((N-1)/2)-th characters of S is a palindrome.

The string consisting of the (N+3)/2-st through N-th characters of S is a palindrome.

Determine whether S is a strong palindrome.

Constraints

S consists of lowercase English letters.

The length of S is an odd number between 3 and 99 (inclusive).

Input

Input is given from Standard Input in the following format:

S

Output

If S is a strong palindrome, print Yes;
otherwise, print No.

Sample Input 1

akasaka

Sample Output 1

Yes

S is akasaka.

The string formed by the 1-st through the 3-rd characters is aka.

The string formed by the 5-th through the 7-th characters is aka.
All of these are palindromes, so S is a strong palindrome.

Sample Input 2

level

Sample Output 2

No

Sample Input 3

atcoder

Sample Output 3

No

Solution in C (GCC 5.4.1) (judge verdict: Accepted)

#include <stdio.h>
#include <string.h>

int main(void){
    // 定義
    char s[100],x[100],y[100],z[100],a[100],b[100];
    scanf("%s",&s);
    strcpy(x,s);
    // 回文判定
    int n = strlen(s);
    int len = strlen(x);
    for (int i=0;i <= (len/2)-1;i++){
        char tmp = x[i];
        x[i] = x[len-1];
        x[len-1] = tmp;
        len--;
    }
    if (strcmp(s,x)==0){
        // 2つ目
        strncpy(y,s,(n-1)/2);
        y[(n-1)/2] = '\0';
        strcpy(z,y);
        len = strlen(y);
        for (int j=0;j <= (len/2)-1; j++){
            char tmp = z[j];
            z[j] = z[len-1];
            z[len-1] = tmp;
            len--;
        }
        if (strcmp(y,z)==0){
            // 3つ目
            strncpy(a,s-1+(n+3)/2,n+1-(n+3)/2);
            a[n+1-(n+3)/2] = '\0';
            strcpy(b,a);
            len = strlen(a);
            for (int k=0;k<=(len/2)-1;k++){
                char tmp = b[k];
                b[k] = b[len-1];
                b[len-1] = tmp;
                len--;
            }
            if(strcmp(a,b)==0){
                printf("Yes");
            }else{
                printf("No");
            }
        }else{
            printf("No");
        }
    }else{
        printf("No");
    }
}