#include <stdio.h>
#include <stdlib.h>
// 文字列の長さを返す関数
int myStrlen(char s[]){
int i;
for(i = 0; s[i] != '\0'; i++);
return i;
}
// 回文を作成して返す関数
// 関数の中でtmpに対してmallocして
// そこに回文を代入してreturnで返しましょう
char *setPalindrome(char s[]){
char *tmp;
int len = myStrlen(s);
int i;
tmp
= (char *)malloc(sizeof(char) * (2 * len
+ 1));
for(i = 0; i < len; i++){
tmp[i] = s[i];
}
for(i = 0; i < len; i++){
tmp[len + i] = s[len - 1 - i];
}
tmp[2 * len] = '\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+OBleOCkui/lOOBmemWouaVsAppbnQgbXlTdHJsZW4oY2hhciBzW10pewogICAgaW50IGk7CiAgICBmb3IoaSA9IDA7IHNbaV0gIT0gJ1wwJzsgaSsrKTsKICAgIHJldHVybiBpOwp9CgovLyDlm57mlofjgpLkvZzmiJDjgZfjgabov5TjgZnplqLmlbAKLy8g6Zai5pWw44Gu5Lit44GndG1w44Gr5a++44GX44GmbWFsbG9j44GX44GmCi8vIOOBneOBk+OBq+WbnuaWh+OCkuS7o+WFpeOBl+OBpnJldHVybuOBp+i/lOOBl+OBvuOBl+OCh+OBhgpjaGFyICpzZXRQYWxpbmRyb21lKGNoYXIgc1tdKXsKICAgIGNoYXIgKnRtcDsKICAgIGludCBsZW4gPSBteVN0cmxlbihzKTsKICAgIGludCBpOwoKICAgIHRtcCA9IChjaGFyICopbWFsbG9jKHNpemVvZihjaGFyKSAqICgyICogbGVuICsgMSkpOwoKICAgIGZvcihpID0gMDsgaSA8IGxlbjsgaSsrKXsKICAgICAgICB0bXBbaV0gPSBzW2ldOwogICAgfQogICAgZm9yKGkgPSAwOyBpIDwgbGVuOyBpKyspewogICAgICAgIHRtcFtsZW4gKyBpXSA9IHNbbGVuIC0gMSAtIGldOwogICAgfQoKICAgIHRtcFsyICogbGVuXSA9ICdcMCc7CiAgICByZXR1cm4gdG1wOwp9CgovLyDjg6HjgqTjg7PplqLmlbDjga/jgYTjgZjjgovlv4XopoHjga/jgYLjgorjgb7jgZvjgpMKaW50IG1haW4oKXsKICAgIGludCBpOwogICAgY2hhciBueXVyeW9rdVsxMDI0XTsgLy/lhaXlipsKICAgIGNoYXIgKmthaWJ1bjsgICAvL+WbnuaWh+OCkuWPl+OBkeWPluOCiwogICAgc2NhbmYoIiVzIiwgbnl1cnlva3UpOwogICAga2FpYnVuID0gc2V0UGFsaW5kcm9tZShueXVyeW9rdSk7CiAgICBwcmludGYoIiVzXG4gIC0+ICVzXG4iLCBueXVyeW9rdSwga2FpYnVuKTsKICAgIGZyZWUoa2FpYnVuKTsKICAgIHJldHVybiAwOwp9Cgo=