#include <stdio.h>
#include <stdlib.h>
int myStrlen(char s[]){
int i;
for(i=0;s[i]!='\0';i++);
return i;
}
int hantei(char tmp[]){
int n,medi;
n=myStrlen(tmp);
if(n%2==1){
medi=(n/2)+1;
}else{
medi=(n/2);
}
for(int i=0;i<medi;i++){
if(tmp[i]!=tmp[n-1-i]){
return 0;
}
}
return 1;
}
char *zurashi(char tmp[], int count, int n){
if(count==-1){
return tmp;
}
else{
tmp[n+count]=tmp[n+count-1];
return zurashi(tmp,count-1,n);
}
}
char *setPalindrome(char s[]){
char *tmp;
int m,n,i,count=-1;
n=myStrlen(s);
m=2*n;
tmp
=(char *)malloc(sizeof(char )*m
); for(i=0;i<n;i++){
tmp[i]=s[i];
}
while(hantei(tmp)==0){
count++;
zurashi(tmp,count,n);
tmp[n]=s[count];
}
printf("増やした文字数 : %d文字",count
+1); return tmp;
}
//メイン関数はいじる必要はありません
int main(){
int i;
char nyuryoku[1024]; //入力
char *kaibun; //回文を受け取る
kaibun = setPalindrome(nyuryoku);
printf("%s -> %s\n",nyuryoku
,kaibun
); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmludCBteVN0cmxlbihjaGFyIHNbXSl7CiAgICBpbnQgaTsKICAgIGZvcihpPTA7c1tpXSE9J1wwJztpKyspOwogICAgcmV0dXJuIGk7Cn0KCmludCBoYW50ZWkoY2hhciB0bXBbXSl7CglpbnQgbixtZWRpOwoJbj1teVN0cmxlbih0bXApOwoJaWYobiUyPT0xKXsKCQltZWRpPShuLzIpKzE7Cgl9ZWxzZXsKCQltZWRpPShuLzIpOwoJfQoJCglmb3IoaW50IGk9MDtpPG1lZGk7aSsrKXsKCQlpZih0bXBbaV0hPXRtcFtuLTEtaV0pewoJCQlyZXR1cm4gMDsKCQl9Cgl9CglyZXR1cm4gMTsKfQpjaGFyICp6dXJhc2hpKGNoYXIgdG1wW10sIGludCBjb3VudCwgaW50IG4pewoJCglpZihjb3VudD09LTEpewoJCXJldHVybiB0bXA7Cgl9CgllbHNlewoJCXRtcFtuK2NvdW50XT10bXBbbitjb3VudC0xXTsKCQlyZXR1cm4genVyYXNoaSh0bXAsY291bnQtMSxuKTsKCX0KfQoKY2hhciAqc2V0UGFsaW5kcm9tZShjaGFyIHNbXSl7CgljaGFyICp0bXA7CglpbnQgbSxuLGksY291bnQ9LTE7CgluPW15U3RybGVuKHMpOwoJbT0yKm47Cgl0bXA9KGNoYXIgKiltYWxsb2Moc2l6ZW9mKGNoYXIgKSptKTsKCWZvcihpPTA7aTxuO2krKyl7CgkJdG1wW2ldPXNbaV07Cgl9Cgl3aGlsZShoYW50ZWkodG1wKT09MCl7CgkJY291bnQrKzsKCQl6dXJhc2hpKHRtcCxjb3VudCxuKTsKCQl0bXBbbl09c1tjb3VudF07Cgl9CglwcmludGYoIuWil+OChOOBl+OBn+aWh+Wtl+aVsCA6ICVk5paH5a2XIixjb3VudCsxKTsKCXJldHVybiB0bXA7Cn0KCgovL+ODoeOCpOODs+mWouaVsOOBr+OBhOOBmOOCi+W/heimgeOBr+OBguOCiuOBvuOBm+OCkwppbnQgbWFpbigpewogICAgaW50IGk7CiAgICBjaGFyIG55dXJ5b2t1WzEwMjRdOyAvL+WFpeWKmwogICAgY2hhciAqa2FpYnVuOyAgIC8v5Zue5paH44KS5Y+X44GR5Y+W44KLCiAgICBzY2FuZigiJXMiLG55dXJ5b2t1KTsKICAgIGthaWJ1biA9IHNldFBhbGluZHJvbWUobnl1cnlva3UpOwogICAgcHJpbnRmKCIlcyAgLT4gJXNcbiIsbnl1cnlva3Usa2FpYnVuKTsKICAgIGZyZWUoa2FpYnVuKTsKICAgIHJldHVybiAwOwp9Cg==