13. Lucky Numbers (easy)

来源:互联网 发布:大数据架构师做什么 编辑:程序博客网 时间:2024/05/20 08:00
  1. Lucky Numbers (easy)
    time limit per test: 2 seconds memory limit per test: 256 megabytes

Petya loves lucky numbers. Everybody knows that positive integers are lucky if their decimal representation doesn’t contain digits other than 4 and 7. For example, numbers 47, 744, 4 are lucky and 5, 17, 467 are not.

Lucky number is super lucky if it’s decimal representation contains equal amount of digits 4 and 7. For example, numbers 47, 7744, 474477 are super lucky and 4, 744, 467 are not.

One day Petya came across a positive integer n. Help him to find the least super lucky number which is not less than n.

Input

The only line contains a positive integer n (1≤n≤109). This number doesn’t have leading zeroes.

Output

Output the least super lucky number that is more than or equal to n.

Please, do not use the %lld specificator to read or write 64-bit integers in C++. It is preferred to use the cin, cout streams or the %I64d specificator.

Examples

Input

4500
Output

4747
Input

47
Output

47

#include<iostream>#include<cstring>#include<algorithm>using namespace std;char luck[1000];char num[1000];char maxluck[1000];char temp[1000];int len,tt;int main(){    cin>>num;    len = strlen(num);    len =(len+1)/2*2;    for (int i=0;i<len/2;i++)        maxluck[i]='7';    for (int i=len/2;i<len;i++)        maxluck[i]='4';    if (strcmp(num,maxluck)>0&&strlen(num)==strlen(maxluck)) len+=2;    for (int i=0;i<len/2;i++)        luck[i]='4';    for (int i=len/2;i<len;i++)        luck[i]='7';    do{        if (strcmp(luck,num)>=0||(strlen(luck)>strlen(num)))        {            cout<<luck<<endl;            return 0;        }   }while(next_permutation(luck,luck+len));    return  0;}
原创粉丝点击