
Автоном
6 год назад
C++ или Паскаль
решите пожалуйстаааа
Натуральное число называется если читается слева направо и справа налево одинаково. Вам
дано одно натуральное число N, которое состоит из не более чем 106 цифр. Найдите наименьший
палиндром, который строго больше N.
Формат входного файла
В единственной строке входного файла содержится одно натуральное число N. N не содержит
лидирующих нулей и состоит из не более чем 106 цифр.
Формат выходного файла
Выведите одно целое число – наименьший палиндром, который строго больше N.
например 365 - 373
ОТВЕТЫ

Ферапонт
Jul 4, 2019
//Dev-C++ 5.11
#include lt;iostreamgt;
#include lt;stringgt;
using namespace std;
void plus1(char*,int*);
int main(void)
{string n;
char poli[108];
int kar=0,buf,add=0;
cingt;gt;n;
for(int i=0;ilt;n.length()/2+n.length()2;i++)
{poli[kar]=n[i];
kar++;}
buf=kar;
plus1(poli,amp;kar);
if(buf!=kar)
{add++;
buf=kar;}
if((n.length()+add)2!=0)
for(int i=buf-2;igt;=0;i--)
{poli[kar]=poli[i];
kar++;}
else
for(int i=buf-1;igt;=0;i--)
{poli[kar]=poli[i];
kar++;}
for(int i=0;ilt;kar;i++)
coutlt;lt;poli[i];
return 0;}
void plus1(char slogaem[],int* len)
{int add=1;
for(int i=*len-1;igt;=0;i--)
if(slogaem[i]==9 amp;amp; add==1)
{add=1;
slogaem[i]=0;}
else
{slogaem[i]+=add;
add=0;}
if(slogaem[0]==0 amp;amp; add==1)
{for(int i=*len;igt;0;i--)
slogaem[i]=slogaem[i-1];
slogaem[0]=1;
*len+=1;}}
Пример ввода:
93439
Пример вывода:
93539
#include lt;iostreamgt;
#include lt;stringgt;
using namespace std;
void plus1(char*,int*);
int main(void)
{string n;
char poli[108];
int kar=0,buf,add=0;
cingt;gt;n;
for(int i=0;ilt;n.length()/2+n.length()2;i++)
{poli[kar]=n[i];
kar++;}
buf=kar;
plus1(poli,amp;kar);
if(buf!=kar)
{add++;
buf=kar;}
if((n.length()+add)2!=0)
for(int i=buf-2;igt;=0;i--)
{poli[kar]=poli[i];
kar++;}
else
for(int i=buf-1;igt;=0;i--)
{poli[kar]=poli[i];
kar++;}
for(int i=0;ilt;kar;i++)
coutlt;lt;poli[i];
return 0;}
void plus1(char slogaem[],int* len)
{int add=1;
for(int i=*len-1;igt;=0;i--)
if(slogaem[i]==9 amp;amp; add==1)
{add=1;
slogaem[i]=0;}
else
{slogaem[i]+=add;
add=0;}
if(slogaem[0]==0 amp;amp; add==1)
{for(int i=*len;igt;0;i--)
slogaem[i]=slogaem[i-1];
slogaem[0]=1;
*len+=1;}}
Пример ввода:
93439
Пример вывода:
93539
286
Смежные вопросы: