Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #include<string.h>
- #include<stdio.h>
- using namespace std;
- typedef long long int ll;
- string addi(string s1,string s2)
- {
- int i,j,k,sum=0,carry=0,len1,len2;
- string ans="";
- if(s1.length()>s2.length())
- swap(s1,s2);
- reverse(s1.begin(),s1.end());
- reverse(s2.begin(),s2.end());
- len1=s1.length();
- len2=s2.length();
- for(i=0;i<len1;i++)
- {
- sum=(s1[i]-'0' + s2[i]-'0')+carry;
- ans.push_back(sum%10 + '0');
- carry=sum/10;
- }
- for(i=len1;i<len2;i++)
- {
- sum=(s2[i]-'0')+carry;
- ans.push_back(sum%10 + '0');
- carry=sum/10;
- }
- if(carry)
- {
- ans.push_back(carry + '0');
- }
- reverse(ans.begin(),ans.end());
- return ans;
- }
- bool checkall(string s)
- {
- ll len=s.size();
- for(ll i=0;i<len;i++)
- {
- if(s[i]!='9')
- return false;
- }
- return true;
- }
- void oddfun(string s)
- {
- ll len=s.size();
- ll i,j,k,l;
- if(checkall(s))
- {
- cout<<1;
- ll sz=len-1;
- while(sz--)
- cout<<0;
- cout<<1<<endl;
- }
- else
- {
- string a="",b="",c="",res="";
- ll mid=(len/2);
- for(i=0; i<mid; i++)
- a+=s[i];
- res+=a;
- res+=s[mid];
- reverse(a.begin(),a.end());
- res+=a;
- if(res>s)
- {
- cout<<res<<endl;
- }
- else
- {
- if(s[mid]!='9')
- {
- res="",a="";
- for(i=0; i<mid; i++)
- a+=s[i];
- res+=a;
- ll x=(s[mid]-'0')+1;
- res+=(x+'0');
- reverse(a.begin(),a.end());
- res+=a;
- cout<<res<<endl;
- }
- else
- {
- a="",res="";
- for(i=0; i<=mid; i++)
- {
- a+=s[i];
- }
- b=addi(a,"1");
- for(i=0; i<b.size()-1; i++)
- c+=b[i];
- res+=b;
- reverse(c.begin(),c.end());
- res+=c;
- cout<<res<<endl;
- }
- }
- }
- }
- void evenfun(string s)
- {
- ll len=s.size();
- ll i,k,j,l;
- string a="",b="",c="",res="";
- if(checkall(s))
- {
- cout<<1;
- ll sz=len-1;
- while(sz--)
- cout<<0;
- cout<<1<<endl;
- }
- else
- {
- ll mid=len/2;
- for(i=0; i<mid; i++)
- a+=s[i];
- res+=a;
- reverse(a.begin(), a.end());
- res+=a;
- if(res>s)
- cout<<res<<endl;
- else
- {
- if(s[mid-1]!='9')
- {
- a="",res="";
- s[mid-1]=(s[mid-1]-'0'+1)+'0';
- for(i=0; i<mid; i++)
- a+=s[i];
- res+=a;
- reverse(a.begin(), a.end());
- res+=a;
- cout<<res<<endl;
- }
- else
- {
- res="",a="";
- for(i=0; i<=mid; i++)
- a+=s[i];
- b=addi(a,"1");
- for(i=0; i<b.size()-1; i++)
- c+=b[i];
- res+=c;
- reverse(c.begin(),c.end());
- res+=c;
- cout<<res<<endl;
- }
- }
- }
- }
- int main()
- {
- ll t,i,j,k,cas;
- cin>>t;
- for(cas=1; cas<=t; cas++)
- {
- string s;
- cin>>s;
- cout<<"Case "<<cas<<": ";
- if(s.size()%2==0)
- {
- evenfun(s);
- }
- else
- {
- oddfun(s);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement