hdoj ztr loves lucky numbers 5676 (dfs模拟)
来源:互联网 发布:caffe官网 编辑:程序博客网 时间:2024/05/17 21:56
ztr loves lucky numbers
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 918 Accepted Submission(s): 389
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.
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 integern(1≤n≤1018) . This number doesn't have leading zeroes.
For each cases:
The only line contains a positive integer
Output
For each cases
Output the answer
Output the answer
Sample Input
2450047
Sample Output
474747
Source
BestCoder Round #82 (div.2)
问题描述
ztr喜欢幸运数字,他对于幸运数字有两个要求1:十进制表示法下只包含4、72:十进制表示法下4和7的数量相等比如47,474477就是而4,744,467则不是现在ztr想知道最小的但不小于n的幸运数字是多少
输入描述
有T(1≤T≤105)组数据,每组数据一个正整数n,1≤n≤1018
输出描述
有T行,每行即答案
输入样例
2450047
输出样例
474747
Hint
请尽可能地优化算法,考虑全面
//没啥说的,就是一个dfs模拟,但是得注意一个特判,见代码
#include<stdio.h>#include<string.h>#include<algorithm>#include<iostream>#define INF 0x3f3f3f3f#define ll long long#define N 100010using namespace std;ll a[N];int cnt;void dfs(int l,int r,int len,ll num){if(l>len/2||r>len/2) return ;if(l+r==len&&l==r){a[cnt++]=num;return ;}if(l<=len/2) dfs(l+1,r,len,num*10+4);if(r<=len/2) dfs(l,r+1,len,num*10+7);}int main(){cnt=0;for(int i=2;i<=18;i+=2)dfs(0,0,i,0);int t;ll n;scanf("%d",&t);while(t--){scanf("%lld",&n);if(n>777777777444444444ll) //特判 printf("44444444447777777777\n");elseprintf("%lld\n",a[lower_bound(a,a+cnt,n)-a]);}return 0;}
0 0
- hdoj ztr loves lucky numbers 5676 (dfs模拟)
- hdoj 5676 ztr loves lucky numbers 【二分】
- HDU 5676 ztr loves lucky numbers【DFS】
- HDOJ 5676 ztr loves lucky numbers (贪心+数位DP)
- hdu 5676 ztr loves lucky numbers【dfs+剪枝】
- HDU 5676 ztr loves lucky numbers dfs+二分
- HDU 5756 ztr loves lucky numbers (dfs)
- hdu5676 ztr loves lucky numbers DFS+二分
- hdu 5676ztr loves lucky numbers(全排列函数)
- HDU 5676 ztr loves lucky numbers
- HDU 5676 ztr loves lucky numbers
- Hdu 5676 ztr loves lucky numbers
- HDU 5676 ztr loves lucky numbers
- hdu 5676 ztr loves lucky numbers
- hdu 5676 ztr loves lucky numbers
- hdu 5676-ztr loves lucky numbers
- hdu 5676 ztr loves lucky numbers
- hdu 5676 ztr loves lucky numbers
- 2016SDAU课程练习三1010
- JSP基础语法
- Angularjs输出html
- java多线程实现方式
- 字符串复制函数小结
- hdoj ztr loves lucky numbers 5676 (dfs模拟)
- 指针与引用的区别
- 09_JSP 动作元素
- OpenCL概述 续篇(Introduction to OpenCL)
- 05派 OJ
- 【裸奔吧linux】ubuntu 个人收藏软件列表
- 漫谈协同过滤推荐算法(一)
- 10_JSP 隐式对象
- Java微信公众号开发:网页授权获取用户基本信息