#include <stdio.h>
#include <stdlib.h>
// 文字列の長さを取得する関数
int myStrlen(char s[]) {
int i;
for (i = 0; s[i] != '\0'; i++);
return i;
}
// 回文を作成し、mallocで確保した領域に入れて返す関数
char *setPalindrome(char s[]) {
char *tmp;
int size = myStrlen(s);
int i;
tmp
= (char *)malloc(sizeof(char) * (2 * size
+ 1)); if (tmp == NULL) {
}
for (i = 0; i < size; i++) {
tmp[i] = s[i];
}
for (i = 0; i < size; i++) {
tmp[size + i] = s[size - 1 - i];
}
tmp[2 * size] = '\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+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8vIOaWh+Wtl+WIl+OBrumVt+OBleOCkuWPluW+l+OBmeOCi+mWouaVsAppbnQgbXlTdHJsZW4oY2hhciBzW10pIHsKICAgIGludCBpOwogICAgZm9yIChpID0gMDsgc1tpXSAhPSAnXDAnOyBpKyspOwogICAgcmV0dXJuIGk7Cn0KCi8vIOWbnuaWh+OCkuS9nOaIkOOBl+OAgW1hbGxvY+OBp+eiuuS/neOBl+OBn+mgmOWfn+OBq+WFpeOCjOOBpui/lOOBmemWouaVsApjaGFyICpzZXRQYWxpbmRyb21lKGNoYXIgc1tdKSB7CiAgICBjaGFyICp0bXA7CiAgICBpbnQgc2l6ZSA9IG15U3RybGVuKHMpOwogICAgaW50IGk7CgogICAgdG1wID0gKGNoYXIgKiltYWxsb2Moc2l6ZW9mKGNoYXIpICogKDIgKiBzaXplICsgMSkpOwogICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgcHJpbnRmKCLjg6Hjg6Ljg6rnorrkv53lpLHmlZdcbiIpOwogICAgfQoKICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICB0bXBbaV0gPSBzW2ldOwogICAgfQoKICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICB0bXBbc2l6ZSArIGldID0gc1tzaXplIC0gMSAtIGldOwogICAgfQoKICAgIHRtcFsyICogc2l6ZV0gPSAnXDAnOwoKICAgIHJldHVybiB0bXA7Cn0KCi8vIOODoeOCpOODs+mWouaVsO+8iOOBhOOBmOOCi+W/heimgeOBquOBl++8iQppbnQgbWFpbigpIHsKICAgIGludCBpOwogICAgY2hhciBueXVyeW9rdVsxMDI0XTsgIAogICAgY2hhciAqa2FpYnVuOyAgICAgICAgIAoKICAgIHNjYW5mKCIlcyIsIG55dXJ5b2t1KTsKICAgIGthaWJ1biA9IHNldFBhbGluZHJvbWUobnl1cnlva3UpOwogICAgcHJpbnRmKCIlc1xuICAtPiAlc1xuIiwgbnl1cnlva3UsIGthaWJ1bik7CiAgICBmcmVlKGthaWJ1bik7IAoKICAgIHJldHVybiAwOwp9Cg==