this is my code.actually i found after my solution that it can take 10^6 digits.For this i don’t know how to proceed.plz some1 solve this for me by modifying my code so that i can grab what’s going wrong with me.plz.
#include<bits/stdc++.h>
using namespace std;
string mid(string &x,int y)
{
int a=y/2;
if(y%2!=0)
while(a>0)
{
if(x[a]==9)
{
x[a]=0;
}
else
{
x[a]+=1;
return(x);
}
a--;
}
else
while(a>0)
{
if(x[a]==9)
{
if(x[a]>x[a-1])
{
x[a]=0;
x[a-1]=0;
}
else if(x[a]==x[a-1])
{
x[a]=0;
x[a-1]=0;
}
else
{
x[a]=x[a-1];
}
}
else
{
if(x[a]>x[a-1])
{
x[a-1]+=1;
}
else if(x[a]==x[a-1])
{
x[a-1]+=1;
}
else
{
x[a]=x[a-1];
}
return(x);
}
a--;
}
}
void change(string &x,int y)
{
int a=y/2-1;
while(a>=0)
{
x[y-1-a]=x[a];
a--;
}
cout<<x<<endl;
}
int main()
{
int t;
cin>>t;
while(t–)
{
long long int n;
cin>>n;
n=n+1;
ostringstream str1;
str1<<n;
string s;
s=str1.str();
int len;
len=s.length();
int flag=0;
if(n<=11)
cout<<"11"<<endl;
else
{
for(int i=len/2-1;i>=0;i--)
{
if(s[i]<s[len-1-i])
{
flag=1;
break;
}
else if(s[i]>s[len-1-i])
{
flag=2;
}
}
if(flag==0)
{
cout<<s<<endl;
}
else if(flag==2)
{
change(s,len);
}
else if(flag==1)
{
s=mid(s,len);
change(s,len);
}
}
}
return 0;
}