#include using namespace std; #define LEN 2000 // obican strlen unsigned int strl(const char*); // po datom stringu pise minimalni broj duzine n+1 void writesmallest(char*,int); // trazi sledeci brojevni palindrom, zadaju se null-terminirani string i njegova duzina void findnext(char*,int); // trazi sledeci brojevni palindrom, zadaje se null-terminirani string void findnext(char*); int main() { char a[LEN]; a[0] = '1'; a[1] = 0; for(int i=0;i<500;i++) { findnext(a); cout << a << ' '; } return 0; } unsigned int strl(const char*s) { const char *t = s; while(*t) t++; return t-s; } void writesmallest(char*s,int n) { *(s++) = '1'; while(n>2) { *(s++) = '0'; n--; } *(s++) = '1'; *s = 0; } void findnext(char*s,int n) { int start = (n-1)/2, end = (n&1)?start:start+1; while(start > -1) { if(s[start] < '9') { s[start]++; if(start != end) s[end]++; start++; end--; while(start<=end) { s[start] = '0'; s[end] = '0'; start++; end--; } return; } else { start--; end++; } } writesmallest(s,n+1); } void findnext(char*s) { findnext(s,strl(s)); }