hdu5676 ztr loves lucky numbers (打表二分)
2016-06-01 20:14
435 查看
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
Output the answer
Sample Input
2
4500
47
Sample Output
4747
47
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
Output the answer
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; }
相关文章推荐
- Centos 设置静态IP
- 二叉树的顺序存储结构的C++实现
- android flexboxlayout简单使用
- Dao层的数据库的持续化过程中批量加入数据
- 习题: codevs 2492 上帝造题的七分钟2 解题报告
- 习题: codevs 2492 上帝造题的七分钟2 解题报告
- UVA oj 494 Kindergarten Counting Game(简单字符串)
- 插补方法的分类
- Ubuntu下添加开机启动脚本
- poj 3009 dfs
- activity的建立,配置和使用
- 使用MUI/html5plus集成微信支付需要注意的几点问题
- 有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
- [置顶] 解决 Successfully created project '' on GitHub, but initial push failed: Could not read from remote re
- 关于微信公众号安卓的静态页面缓存问题
- java calender坑
- 数据库乱码问题
- UI(base)--android
- 【Leetcode】Factorial Trailing Zeroes
- hihocoder 1257 扩展欧几里得