#include <stdio.h>
unsigned rev(unsigned n) {
unsigned acc;
for (acc = 0; n; acc = acc * 10 + n % 10, n /= 10);
return acc;
}
struct found {unsigned count, first, second, error;};
struct found f(unsigned n) {
unsigned a, b;
if (n == rev(n)) return (struct found){1, n};
for (a = n - 1, b = n + 1; ;a--, b++)
switch ((a == rev(a)) * 10 + (b == rev(b))) {
case 11: return (struct found){2, a, b};
case 10: return (struct found){1, a};
case 01: return (struct found){1, b};
case 00: break;
default: return (struct found){0, -1, -1, 1};
}
return (struct found){0, -1, -1, 2};
}
void g(unsigned n) {
struct found found = f(n);
switch (found.count) {
case 1: printf("出力: [%u]\n\n", found.
first);break; case 2: printf("出力: [%u, %u]\n\n", found.
first, found.
second);break; default: printf("出力: []\n\n"); }
}
int main() {
g(0), g(17), g(100);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CnVuc2lnbmVkIHJldih1bnNpZ25lZCBuKSB7CiAgdW5zaWduZWQgYWNjOwogIGZvciAoYWNjID0gMDsgbjsgYWNjID0gYWNjICogMTAgKyBuICUgMTAsIG4gLz0gMTApOwogIHJldHVybiBhY2M7Cn0Kc3RydWN0IGZvdW5kIHt1bnNpZ25lZCBjb3VudCwgZmlyc3QsIHNlY29uZCwgZXJyb3I7fTsKc3RydWN0IGZvdW5kIGYodW5zaWduZWQgbikgewogIHVuc2lnbmVkIGEsIGI7CiAgaWYgKG4gPT0gcmV2KG4pKSByZXR1cm4gKHN0cnVjdCBmb3VuZCl7MSwgbn07CiAgZm9yIChhID0gbiAtIDEsIGIgPSBuICsgMTsgO2EtLSwgYisrKQogICAgc3dpdGNoICgoYSA9PSByZXYoYSkpICogMTAgKyAoYiA9PSByZXYoYikpKSB7CiAgICBjYXNlIDExOiByZXR1cm4gKHN0cnVjdCBmb3VuZCl7MiwgYSwgYn07CiAgICBjYXNlIDEwOiByZXR1cm4gKHN0cnVjdCBmb3VuZCl7MSwgYX07CiAgICBjYXNlIDAxOiByZXR1cm4gKHN0cnVjdCBmb3VuZCl7MSwgYn07CiAgICBjYXNlIDAwOiBicmVhazsKICAgIGRlZmF1bHQ6IHJldHVybiAoc3RydWN0IGZvdW5kKXswLCAtMSwgLTEsIDF9OwogICAgfQogIHJldHVybiAoc3RydWN0IGZvdW5kKXswLCAtMSwgLTEsIDJ9Owp9CnZvaWQgZyh1bnNpZ25lZCBuKSB7CiAgc3RydWN0IGZvdW5kIGZvdW5kID0gZihuKTsKICBwcmludGYoIuWFpeWKmzogJXVcbiIsIG4pOwogIHN3aXRjaCAoZm91bmQuY291bnQpIHsKICBjYXNlIDE6IHByaW50Zigi5Ye65YqbOiBbJXVdXG5cbiIsIGZvdW5kLmZpcnN0KTticmVhazsKICBjYXNlIDI6IHByaW50Zigi5Ye65YqbOiBbJXUsICV1XVxuXG4iLCBmb3VuZC5maXJzdCwgZm91bmQuc2Vjb25kKTticmVhazsKICBkZWZhdWx0OiBwcmludGYoIuWHuuWKmzogW11cblxuIik7CiAgfQp9CmludCBtYWluKCkgewogIGcoMCksIGcoMTcpLCBnKDEwMCk7CiAgcmV0dXJuIDA7Cn0K