#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int all_nine(char* input){
int result = 1, i;
for(i
= 0; i
< strlen(input
); ++i
){ if(input[i] != '9')
return 0;
}
return result;
}
char* increase_one(char* input){
int i;
for(i
= strlen(input
) - 1; i
>= 0; --i
) { if(input[i] < '9'){
input[i] += 1;
break;
}
else{
input[i] = '0';
}
}
return input;
}
char* increase_make_palin(char* input){
int input_len
= strlen(input
); int half_len = input_len%2 ? input_len/2 : input_len/2 - 1;
int carry = 1, i;
for(i = half_len; i >= 0; --i) {
int cur_val = input[i] - '0';
carry = (cur_val + carry) / 10;
int new_val = (cur_val + carry) % 10;
input[i] = input[input_len - 1 - i] = '0' + new_val;
}
return input;
}
char* next_palin_for_me(char* input){
int input_len
= strlen(input
); int half_len = input_len/2 - 1, i;
for(i = half_len; i >= 0; --i) {
if(input[i] > input[input_len - 1 - i]){
input[input_len - 1 - i] = input[i];
} else {
return increase_make_palin(input);
}
}
return input;
}
char* next_palin(char* input){
int input_len
= strlen(input
); if(all_nine(input)){
return next_palin_for_me(increase_one(input));
}
if(input_len == 1){
input[0] += 1;
return input;
}
input = increase_one(input);
return next_palin_for_me(input);
}
int main() {
int n, i;
char input[1000010];
for(i = 0 ; i < n ; i++){
char* result = next_palin(input);
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKaW50IGFsbF9uaW5lKGNoYXIqIGlucHV0KXsKICBpbnQgcmVzdWx0ID0gMSwgaTsKICBmb3IoaSA9IDA7IGkgPCBzdHJsZW4oaW5wdXQpOyArK2kpewogICAgaWYoaW5wdXRbaV0gIT0gJzknKQogICAgICByZXR1cm4gMDsKICB9CiAgcmV0dXJuIHJlc3VsdDsKfQoKY2hhciogaW5jcmVhc2Vfb25lKGNoYXIqIGlucHV0KXsKICBpbnQgaTsKICBmb3IoaSA9IHN0cmxlbihpbnB1dCkgLSAxOyBpID49IDA7IC0taSkgewogICAgaWYoaW5wdXRbaV0gPCAnOScpewogICAgICBpbnB1dFtpXSArPSAxOwogICAgICBicmVhazsKICAgIH0KICAgIGVsc2V7CiAgICAgIGlucHV0W2ldID0gJzAnOwogICAgfQogIH0KICByZXR1cm4gaW5wdXQ7Cn0KCgpjaGFyKiBpbmNyZWFzZV9tYWtlX3BhbGluKGNoYXIqIGlucHV0KXsKICBpbnQgaW5wdXRfbGVuID0gc3RybGVuKGlucHV0KTsKICBpbnQgaGFsZl9sZW4gPSBpbnB1dF9sZW4lMiA/IGlucHV0X2xlbi8yIDogaW5wdXRfbGVuLzIgLSAxOwogIGludCBjYXJyeSA9IDEsIGk7CiAgZm9yKGkgPSBoYWxmX2xlbjsgaSA+PSAwOyAtLWkpIHsKICAgIGludCBjdXJfdmFsID0gaW5wdXRbaV0gLSAnMCc7CiAgICBjYXJyeSA9IChjdXJfdmFsICsgY2FycnkpIC8gMTA7CiAgICBpbnQgbmV3X3ZhbCA9IChjdXJfdmFsICsgY2FycnkpICUgMTA7CiAgICBpbnB1dFtpXSA9IGlucHV0W2lucHV0X2xlbiAtIDEgLSBpXSA9ICcwJyArIG5ld192YWw7CiAgfQogIHJldHVybiBpbnB1dDsKfQpjaGFyKiBuZXh0X3BhbGluX2Zvcl9tZShjaGFyKiBpbnB1dCl7CiAgICBpbnQgaW5wdXRfbGVuID0gc3RybGVuKGlucHV0KTsKICAgIGludCBoYWxmX2xlbiA9IGlucHV0X2xlbi8yICAtIDEsIGk7CiAgICBmb3IoaSA9IGhhbGZfbGVuOyBpID49IDA7IC0taSkgewogICAgICBpZihpbnB1dFtpXSA+IGlucHV0W2lucHV0X2xlbiAtIDEgLSBpXSl7CiAgICAgICAgaW5wdXRbaW5wdXRfbGVuIC0gMSAtIGldID0gaW5wdXRbaV07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIGluY3JlYXNlX21ha2VfcGFsaW4oaW5wdXQpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gaW5wdXQ7Cn0KCmNoYXIqIG5leHRfcGFsaW4oY2hhciogaW5wdXQpewogIGludCBpbnB1dF9sZW4gPSBzdHJsZW4oaW5wdXQpOwogIGlmKGFsbF9uaW5lKGlucHV0KSl7CiAgICByZXR1cm4gbmV4dF9wYWxpbl9mb3JfbWUoaW5jcmVhc2Vfb25lKGlucHV0KSk7CiAgfQogIGlmKGlucHV0X2xlbiA9PSAxKXsKICAgIGlucHV0WzBdICs9IDE7CiAgICByZXR1cm4gaW5wdXQ7CiAgfQogIGlucHV0ID0gaW5jcmVhc2Vfb25lKGlucHV0KTsKICByZXR1cm4gbmV4dF9wYWxpbl9mb3JfbWUoaW5wdXQpOwp9CgppbnQgbWFpbigpIHsKICBpbnQgbiwgaTsKICBzY2FuZigiJWQiLCAmbik7CiAgY2hhciBpbnB1dFsxMDAwMDEwXTsKICBmb3IoaSA9IDAgOyBpIDwgbiA7IGkrKyl7CiAgICBzY2FuZigiJXMiLCBpbnB1dCk7CiAgICBjaGFyKiByZXN1bHQgPSBuZXh0X3BhbGluKGlucHV0KTsKICAgIHByaW50ZigiJXNcbiIsIHJlc3VsdCk7CiAgfQogIHJldHVybiAwOwp9Cg==
OAo5Nzc5NTM3NTc1NjEyMjM1MjU3Mjg3OTgyNjU1MjE1MTY1NDM4NzExMjI2MgoxODkyMzg4NDk3MTY5NTE2NzM0OTkyMzU2NTI4NDY2CjE5ODkxODU5NDQ4Mjg2MTY3ODEyCjQ3NzM3Nzk1NzgyMjQxODc5ODExNTY2Njk3ODI5MjM4ODYyOTk0MjYzMjc4ODQ5OTQyNjMyOTI2NDM4NzI1Cjg1Nzc1MTI3NTc0NDQ3NjI5NzE0OTUxNTY2MQo2OTkKNTExOTc4MzczODY2NTQ0ODEyMTE2MjY0MjI4Ngo0MTc3MTE4NjI0MzEzNDEyOTM3MjM1NzQ2NDUx
8
97795375756122352572879826552151654387112262
1892388497169516734992356528466
19891859448286167812
47737795782241879811566697829238862994263278849942632926438725
857751275744476297149515661
699
5119783738665448121162642286
4177118624313412937235746451