shubhamgoyal22

Untitled

Jun 4th, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.10 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.     int t;
  8.     cin >> t;
  9.  
  10.     while(t--)
  11.     {
  12.         string a;
  13.         cin >> a;
  14.  
  15.         int l=a.length();
  16.         int mid;
  17.  
  18.         string ans;
  19.  
  20.         if(a.length()==1 && a!="9")
  21.         {
  22.             ans=a[0]+1;
  23.             cout << ans << endl;
  24.             continue;
  25.         }
  26.         //check 999
  27.         int c=1;
  28.         for(int i=0;i<a.length();i++)
  29.         {
  30.             if(a[i]!='9')
  31.             {
  32.                 c=0;
  33.             }
  34.         }
  35.         if(c==1)
  36.         {
  37.             ans.push_back('1');
  38.             for(int i=0;i<a.length()-1;i++)
  39.             {
  40.                 ans.push_back('0');
  41.             }
  42.             ans.push_back('1');
  43.             cout  << ans << endl;
  44.             continue;
  45.         }
  46.  
  47.         if(l%2==0)
  48.         {
  49.             mid=(l/2)-1;
  50.             string t1,t2;
  51.             for(int i=0;i<=mid;i++)
  52.             {
  53.                 t1.push_back(a[i]);
  54.             }
  55.  
  56.             for(int i=mid+1;i<a.length();i++)
  57.             {
  58.                 t2.push_back(a[i]);
  59.             }
  60.  
  61.             reverse(t1.begin(),t1.end());
  62.  
  63.             if(t2<t1)
  64.             {
  65.                 ans=t1;
  66.                 reverse(t1.begin(),t1.end());
  67.                 ans=t1+ans;
  68.             }
  69.             else
  70.             {
  71.                 if(a[mid]!='9')
  72.                 {
  73.                     a[mid]+=1;
  74.                     t1.clear();
  75.                     for(int i=0;i<=mid;i++)
  76.                     {
  77.                         t1.push_back(a[i]);
  78.                     }
  79.                     ans=t1;
  80.                     reverse(t1.begin(),t1.end());
  81.                     ans=ans+t1;
  82.                 }
  83.                 else
  84.                 {
  85.                     int p=mid;
  86.                     a[p]='0';
  87.  
  88.                     while(p>=0 && a[p]=='0')
  89.                     {
  90.                         p--;
  91.                         if(a[p]=='9')
  92.                         {
  93.                             a[p]=='0';
  94.                         }
  95.                         else
  96.                         {
  97.                             a[p]+=1;
  98.                         }
  99.                     }
  100.                     t1.clear();
  101.                     for(int i=0;i<=mid;i++)
  102.                     {
  103.                         t1.push_back(a[i]);
  104.                     }
  105.                     ans=t1;
  106.                     reverse(t1.begin(),t1.end());
  107.                     ans=ans+t1;
  108.                 }
  109.             }
  110.  
  111.  
  112.  
  113.         }
  114.         else
  115.         {
  116.             mid=l/2;
  117.             string t1,t2;
  118.             for(int i=0;i<=mid-1;i++)
  119.             {
  120.                 t1.push_back(a[i]);
  121.             }
  122.             for(int i=mid+1;i<l;i++)
  123.             {
  124.                 t2.push_back(a[i]);
  125.             }
  126.             reverse(t1.begin(),t1.end());
  127.  
  128.             if(t2<t1)
  129.             {
  130.                 ans=a[mid]+t1;
  131.                 reverse(t1.begin(),t1.end());
  132.                 ans=t1+ans;
  133.             }
  134.             else
  135.             {
  136.                 if(a[mid]!=57)
  137.                 {
  138.                     a[mid]=a[mid]+1;
  139.                     ans=a[mid]+t1;
  140.                     reverse(t1.begin(),t1.end());
  141.                     ans=t1+ans;
  142.                 }
  143.                 else
  144.                 {
  145.                     int p=mid;
  146.                     a[p]='0';
  147.  
  148.                     while(p>=0 && a[p]=='0')
  149.                     {
  150.                         p--;
  151.                         if(a[p]=='9')
  152.                         {
  153.                             a[p]=='0';
  154.                         }
  155.                         else
  156.                         {
  157.                             a[p]+=1;
  158.                         }
  159.                     }
  160.                     for(int i=0;i<=mid-1;i++)
  161.                     {
  162.                         ans.push_back(a[i]);
  163.                     }
  164.                     ans=ans+'0';
  165.                     for(int i=mid-1;i>=0;i--)
  166.                     {
  167.                         ans.push_back(a[i]);
  168.                     }
  169.                 }
  170.             }
  171.         }
  172.         cout << ans << endl;
  173.     }
  174. }
Add Comment
Please, Sign In to add comment