#include <stdio.h>
#include <stdlib.h> // mallocとfreeを使うから、この道具箱が必要!
int main(void) {
int i, size;
char nyuryoku[1024]; // 入力された文字を入れるノート
char *kaibun; // 新しく作る回文を入れるための魔法の箱
// 【1. 単語を読み込む】
if (scanf("%s", nyuryoku
) != 1) return -1;
// 【2. 回文作成の心臓部】(関数をここに合体!)
// ① 入力された文字の長さ(size)を数える
for (size = 0; nyuryoku[size] != '\0'; size++);
// ② 2倍の長さの新しいノートをパソコンの中に確保する
// (元のサイズ × 2) + 終わりの合図('\0')の1マス分
kaibun
= (char *)malloc(sizeof(char) * (2 * size
+ 1)); if (kaibun == NULL) {
return -1;
}
// ③ 新しいノートの前半半分に、元の文字をそのままコピー
for (i = 0; i < size; i++) {
kaibun[i] = nyuryoku[i];
}
// ④ 新しいノートの後半半分に、後ろからひっくり返してコピー
for (i = 0; i < size; i++) {
kaibun[i + size] = nyuryoku[size - i - 1];
}
// 🛡️ ⑤ 新しいノートの一番お尻に、終わりの合図「\0」を書き込む!
kaibun[2 * size] = '\0';
// 【3. 結果発表】
printf("%s\n -> %s\n", nyuryoku
, kaibun
);
// 【4. お片付け】
free(kaibun
); // mallocで作ったノートをゴミ箱に捨てる
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4gLy8gbWFsbG9j44GoZnJlZeOCkuS9v+OBhuOBi+OCieOAgeOBk+OBrumBk+WFt+euseOBjOW/heimge+8gQoKaW50IG1haW4odm9pZCkgewogICAgaW50IGksIHNpemU7CiAgICBjaGFyIG55dXJ5b2t1WzEwMjRdOyAvLyDlhaXlipvjgZXjgozjgZ/mloflrZfjgpLlhaXjgozjgovjg47jg7zjg4gKICAgIGNoYXIgKmthaWJ1bjsgICAgICAgIC8vIOaWsOOBl+OBj+S9nOOCi+WbnuaWh+OCkuWFpeOCjOOCi+OBn+OCgeOBrumtlOazleOBrueusQoKICAgIC8vIOOAkDEuIOWNmOiqnuOCkuiqreOBv+i+vOOCgOOAkQogICAgaWYgKHNjYW5mKCIlcyIsIG55dXJ5b2t1KSAhPSAxKSByZXR1cm4gLTE7CgogICAgLy8g44CQMi4g5Zue5paH5L2c5oiQ44Gu5b+D6IeT6YOo44CR77yI6Zai5pWw44KS44GT44GT44Gr5ZCI5L2T77yB77yJCiAgICAKICAgIC8vIOKRoCDlhaXlipvjgZXjgozjgZ/mloflrZfjga7plbfjgZXvvIhzaXpl77yJ44KS5pWw44GI44KLCiAgICBmb3IgKHNpemUgPSAwOyBueXVyeW9rdVtzaXplXSAhPSAnXDAnOyBzaXplKyspOwoKICAgIC8vIOKRoSAy5YCN44Gu6ZW344GV44Gu5paw44GX44GE44OO44O844OI44KS44OR44K944Kz44Oz44Gu5Lit44Gr56K65L+d44GZ44KLCiAgICAvLyAo5YWD44Gu44K144Kk44K6IMOXIDIpICsg57WC44KP44KK44Gu5ZCI5ZuzKCdcMCcp44GuMeODnuOCueWIhgogICAga2FpYnVuID0gKGNoYXIgKiltYWxsb2Moc2l6ZW9mKGNoYXIpICogKDIgKiBzaXplICsgMSkpOwogICAgaWYgKGthaWJ1biA9PSBOVUxMKSB7CiAgICAgICAgcHJpbnRmKCJFUlJPUlxuIik7CiAgICAgICAgcmV0dXJuIC0xOwogICAgfQoKICAgIC8vIOKRoiDmlrDjgZfjgYTjg47jg7zjg4jjga7liY3ljYrljYrliIbjgavjgIHlhYPjga7mloflrZfjgpLjgZ3jga7jgb7jgb7jgrPjg5Tjg7wKICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICBrYWlidW5baV0gPSBueXVyeW9rdVtpXTsKICAgIH0KCiAgICAvLyDikaMg5paw44GX44GE44OO44O844OI44Gu5b6M5Y2K5Y2K5YiG44Gr44CB5b6M44KN44GL44KJ44Gy44Gj44GP44KK6L+U44GX44Gm44Kz44OU44O8CiAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAga2FpYnVuW2kgKyBzaXplXSA9IG55dXJ5b2t1W3NpemUgLSBpIC0gMV07CiAgICB9CgogICAgLy8g8J+boe+4jyDikaQg5paw44GX44GE44OO44O844OI44Gu5LiA55Wq44GK5bC744Gr44CB57WC44KP44KK44Gu5ZCI5Zuz44CMXDDjgI3jgpLmm7jjgY3ovrzjgoDvvIEKICAgIGthaWJ1blsyICogc2l6ZV0gPSAnXDAnOwoKICAgIC8vIOOAkDMuIOe1kOaenOeZuuihqOOAkQogICAgcHJpbnRmKCIlc1xuICAtPiAlc1xuIiwgbnl1cnlva3UsIGthaWJ1bik7CgogICAgLy8g44CQNC4g44GK54mH5LuY44GR44CRCiAgICBmcmVlKGthaWJ1bik7IC8vIG1hbGxvY+OBp+S9nOOBo+OBn+ODjuODvOODiOOCkuOCtOODn+euseOBq+aNqOOBpuOCiwoKICAgIHJldHVybiAwOwp9