# hdu5676 ztr loves lucky numbers (打表二分)

ztr loves lucky numbers
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 1132 Accepted Submission(s): 478

Problem Description
ztr 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 ztr came across a positive integer n. Help him to find the least super lucky number which is not less than n.

Input
There are T(1≤n≤105) cases

For each cases:

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

Output
For each cases

Sample Input

2
4500
47

Sample Output

4747
47

``````#include<cstdio>
#include<algorithm>
#include<cmath>
#include<vector>
#include<iostream>
using namespace std;

typedef long long ll;

int bit(ll num){
return log10(num)+1;
}
vector<ll> vec;

bool judge(ll num){
int l4=0,l7=0;
while(num){
if(num%10==4){
++l4;
}else if(num%10==7){
++l7;
}else return false;
num/=10;
}
return l4==l7;
}
void dfs(ll num){
if(num&&judge(num))vec.push_back(num);
if(bit(num)<18){
ll nums=num*10+4;
dfs(nums);
nums=num*10+7;
dfs(nums);
}
}

int main(){
int T;
ll uu=19923;

vec.clear();
dfs(0LL);
sort(vec.begin(),vec.end());
scanf("%d",&T);
int len=vec.end()-vec.begin();
while(T--){
ll n;
scanf("%lld",&n);
int pos=upper_bound(vec.begin(),vec.end(),n)-vec.begin();

if(pos==len){
printf("44444444447777777777\n");
}else{
printf("%lld\n",vec[pos]);
}
}
return 0;
}
``````

• 本文已收录于以下专栏：

## HDU 5676 ztr loves lucky numbers dfs+二分

ztr loves lucky numbers                                                                         Time...
• Houheshuai
• 2016年05月11日 20:06
• 217

## HDU 5676 ztr loves lucky numbers

HDU 5676 ztr loves lucky numbers
• Dacc123
• 2016年04月30日 21:54
• 588

## hdu5676 ztr loves lucky numbers 【打表】

• xinag578
• 2016年05月01日 14:12
• 321

## hdu5676 ztr loves lucky numbers

• yexiaohhjk
• 2016年05月01日 20:20
• 392

## hdu5676 ztr loves lucky numbers DFS+二分

ztr loves lucky numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java...
• EventQueue
• 2016年05月01日 11:57
• 513

## Lucky Number 2

B. Lucky Number 2 time limit per test 2 seconds memory limit per test 256 megabytes input stan...
• xinghongduo
• 2012年01月24日 15:20
• 1703

## CodeForces - 96B Lucky Numbers (easy)

Lucky Numbers (easy) Time Limit: 2000MS   Memory Limit: 262144KB   64bit IO Format: %I6...
• qq_18738333
• 2015年03月29日 02:08
• 778

## 【CodeForces】96B - Lucky Numbers (easy)（模拟，字典序全排列）

B. Lucky Numbers (easy) time limit per test 2 seconds memory limit per test 256 megabytes inpu...
• wyg1997
• 2016年05月23日 21:20
• 732

## codeforces 96B Lucky Numbers （全排列)

Description Petya loves lucky numbers. Everybody knows that positive integers are lucky if their d...
• wchhlbt
• 2016年07月26日 16:53
• 349

## 【string】#84 A. Nearly Lucky Number

A. Nearly Lucky Number time limit per test 2 seconds memory limit per test 256 megabytes...
• okcd00
• 2014年11月29日 21:24
• 927

举报原因： 您举报文章：hdu5676 ztr loves lucky numbers (打表二分) 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)