Skip to content

Instantly share code, notes, and snippets.

@ravikiran0606
Created July 27, 2016 14:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ravikiran0606/bb28cf289ce6ff6a4d8f1150e2aadda3 to your computer and use it in GitHub Desktop.
Save ravikiran0606/bb28cf289ce6ff6a4d8f1150e2aadda3 to your computer and use it in GitHub Desktop.
#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define mp make_pair
#define mod 1e9+7
using namespace std;
int tonum(char c){
return c-'0';
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
string s;
int flag=0;
int f=0;
vector<int>num;
cin>>s;
ll i;
for(i=s.length()-1;i>=0;i--){
num.push_back(tonum(s[i]));
}
for(i=0;i<num.size();i++){
if(num[i]<=4){
num[i]=4;
}
else if(num[i]<=7){
num[i]=7;
if(num[i+1]<=3){
num[i]=4;
num[i+1]++;
}
}
else if(i==num.size()-1){
num[i]=4;
num.push_back(4);
f=1;
}
else{
num[i]=4;
num[i+1]++;
}
}
if(f==1){
int k=num.size();
if(k%2!=0)k++;
for(i=1;i<=(k/2);i++)cout<<"4";
for(i=1;i<=(k/2);i++)cout<<"7";
return 0;
}
int x=0,y=0;
for(i=num.size()-1;i>=0;i--){
if(num[i]==4)x++;
else y++;
}
if(y>x){
num.push_back(4);
int k=num.size();
if(k%2!=0)k++;
for(i=1;i<=(k/2);i++)cout<<"4";
for(i=1;i<=(k/2);i++)cout<<"7";
cout<<endl;
}
else if(x>y){
int k;
int t=(x-y)/2;
if((x-y)%2!=0){
t++;
k=x+y+1;
num.push_back(4);
flag=1;
}
if(flag==1){
for(i=1;i<=(k/2);i++)cout<<"4";
for(i=1;i<=(k/2);i++)cout<<"7";
return 0;
}
for(i=0;i<num.size();i++){
if(num[i]==4){
num[i]=7;
t--;
}
if(t==0)break;
}
for(i=num.size()-1;i>=0;i--){
cout<<num[i];
}
cout<<endl;
}
else{
for(i=num.size()-1;i>=0;i--){
cout<<num[i];
}
cout<<endl;
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment