#include <stdio.h>
#include <stdlib.h>
int myStrlen(char s[]){
int i;
for(i=0;s[i]!='\0';i++);
return i;
}
// 回文を作る関数
char *setPalindrome(char s[]){
char *tmp;
int i;
int n;
// 文字列の長さを調べる
n = myStrlen(s);
// 文字列の2倍+終端文字分のメモリを確保
tmp
= (char *)malloc(sizeof(char) * (n
* 2 + 1)); // 元の文字列をコピーする
for(i=0;i<n;i++){
tmp[i] = s[i];
}
// 元の文字列を逆順に追加する
for(i=0;i<n;i++){
tmp[n+i] = s[n-1-i];
}
// 文字列の終わりを設定
tmp[n*2] = '\0';
return tmp;
}
// メイン関数はいじる必要はありません
int main(){
int i;
char nyuryoku[1024];
char *kaibun;
kaibun = setPalindrome(nyuryoku);
printf("%s\n -> %s\n",nyuryoku
,kaibun
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmludCBteVN0cmxlbihjaGFyIHNbXSl7CiAgICBpbnQgaTsKICAgIGZvcihpPTA7c1tpXSE9J1wwJztpKyspOwogICAgcmV0dXJuIGk7Cn0KLy8g5Zue5paH44KS5L2c44KL6Zai5pWwCmNoYXIgKnNldFBhbGluZHJvbWUoY2hhciBzW10pewogICAgY2hhciAqdG1wOwogICAgaW50IGk7CiAgICBpbnQgbjsKICAgIC8vIOaWh+Wtl+WIl+OBrumVt+OBleOCkuiqv+OBueOCiwogICAgbiA9IG15U3RybGVuKHMpOwogICAgLy8g5paH5a2X5YiX44GuMuWAje+8i+e1guerr+aWh+Wtl+WIhuOBruODoeODouODquOCkueiuuS/nQogICAgdG1wID0gKGNoYXIgKiltYWxsb2Moc2l6ZW9mKGNoYXIpICogKG4gKiAyICsgMSkpOwogICAgLy8g5YWD44Gu5paH5a2X5YiX44KS44Kz44OU44O844GZ44KLCiAgICBmb3IoaT0wO2k8bjtpKyspewogICAgICAgIHRtcFtpXSA9IHNbaV07CiAgICB9CiAgICAvLyDlhYPjga7mloflrZfliJfjgpLpgIbpoIbjgavov73liqDjgZnjgosKICAgIGZvcihpPTA7aTxuO2krKyl7CiAgICAgICAgdG1wW24raV0gPSBzW24tMS1pXTsKICAgIH0KICAgIC8vIOaWh+Wtl+WIl+OBrue1guOCj+OCiuOCkuioreWumgogICAgdG1wW24qMl0gPSAnXDAnOwoKICAgIHJldHVybiB0bXA7Cn0KCgovLyDjg6HjgqTjg7PplqLmlbDjga/jgYTjgZjjgovlv4XopoHjga/jgYLjgorjgb7jgZvjgpMKaW50IG1haW4oKXsKICAgIGludCBpOwogICAgY2hhciBueXVyeW9rdVsxMDI0XTsKICAgIGNoYXIgKmthaWJ1bjsKCiAgICBzY2FuZigiJXMiLG55dXJ5b2t1KTsKCiAgICBrYWlidW4gPSBzZXRQYWxpbmRyb21lKG55dXJ5b2t1KTsKCiAgICBwcmludGYoIiVzXG4gIC0+ICVzXG4iLG55dXJ5b2t1LGthaWJ1bik7CgogICAgZnJlZShrYWlidW4pOwoKICAgIHJldHVybiAwOwp9