Problem:
回文

半角アルファベット文字列からなる、1 行あたり 100 文字以内のデータがあります。いくつかの行は対称（左端から読んでも右端から読んでも同じ）です。このデータを読み込んで、その中の対称な文字列の数を出力するプログラムを作成してください。なお、１文字だけからなる行は対称であるとします。

Input

複数の文字列が複数行にわたって与えられます。各行に１つの文字列が与えられます。文字列の数は 50 を超えません。

Output

対称な文字列の数を１行に出力します。

Sample Input

abcba
sx
abcddcba
rttrd

Output for the Sample Input

2

Solution in C (judge verdict: Time Limit Exceeded)

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

int main(int argc, const char * argv[])
{
    int cnt = 0, cnt2, i, len;
    char s[101], s2[101], tmp;
    
    while (s[0] != '\n') {
        cnt2 = 0;
        for (i = 0; i < 101; i++) {
            s[i] = 0;
            s2[i] = 0;
        }
        
        //入力
        for (i = 0; i < 101; i++) {
            scanf("%c", &s[i]);
            if (s[i] == '\n')
                break;
        }
        //配列をコピー
        for (i = 0; i < 101; i++) {
            s2[i] = s[i];
            if (s[i] == '\n')
                break;
        }
        //配列の長さを把握、改行を含まず
        len = strlen(s) - 2;
    
        //コピーした配列を後ろから入れ替える、
        for (i = 0; i < len / 2; i++) {
            tmp = s2[i];
            s2[i] = s2[len - i];
            s2[len - i] = tmp;
        }
        for (i = 0; i < len; i++) {
            if (s[i] != s2[i]) {
                cnt2++;
            }
        }
        if (cnt2 == 0) {
            cnt++;
        }
    }
    
    printf("%d\n", cnt -1);
    
    return 0;
}