hdoj 5676 ztr loves lucky numbers 【二分】
2016-05-01 12:17
363 查看
题目链接:hdoj 5676 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): 334 Accepted Submission(s): 136
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
题意:ztr喜欢幸运数字,他对于幸运数字有两个要求
1:十进制表示法下只包含4、7
2:十进制表示法下4和7的数量相等
比如47,474477就是
而4,744,467则不是
现在ztr想知道最小的但不小于n的幸运数字是多少
思路:一开始分块预处理,结果WA了。后来没有分块就过了,一脸懵懂。
AC代码:
ztr loves lucky numbers
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 334 Accepted Submission(s): 136
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
题意:ztr喜欢幸运数字,他对于幸运数字有两个要求
1:十进制表示法下只包含4、7
2:十进制表示法下4和7的数量相等
比如47,474477就是
而4,744,467则不是
现在ztr想知道最小的但不小于n的幸运数字是多少
思路:一开始分块预处理,结果WA了。后来没有分块就过了,一脸懵懂。
AC代码:
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <cstring> #define CLR(a, b) memset(a, (b), sizeof(a)) using namespace std; typedef long long LL; const int MAXN = 5*1e6 +10; const int INF = 0x3f3f3f3f; __int64 ans[500000]; int num; void DFS(int pos, int cnt1, int cnt2, int len, __int64 sum) { if(pos == len) { if(cnt1 < cnt2) { sum = sum * 10 + 4; } else { sum = sum * 10 + 7; } ans[num++] = sum; return ; } if(cnt1 + 1 <= len / 2) DFS(pos+1, cnt1+1, cnt2, len, sum * 10 + 4); if(cnt2 + 1 <= len / 2) DFS(pos+1, cnt1, cnt2+1, len, sum * 10 + 7); } int main() { num = 0; for(int i = 2; i <= 18; i += 2) { DFS(1, 0, 0, i, 0); }sort(ans, ans + num); int t; scanf("%d", &t); while(t--) { __int64 n; scanf("%I64d", &n); int pos = lower_bound(ans, ans + num, n) - ans; if(pos != num) { printf("%I64d\n", ans[pos]); } else { printf("44444444447777777777\n"); } } return 0; }
相关文章推荐
- hdoj 5675 ztr loves math 【数学】
- hdoj 1025 Constructing Roads In JGShining's Kingdom 【LIS】
- 基础篇_包(package)
- HTML的本地数据库报错
- C#开发的进化史
- std::ref 有什么用
- PowerShell调用WMI
- redis安装
- 20145120 《Java程序设计》第9周学习总结
- Android Studio 2.+使用分享——关于未签名Apk第一次运行黑屏or白屏
- Python lambda表达式
- 2016年4月14日--4月30日(12小时,剩3009小时)
- nginx安装配置
- 一起talk C栗子吧(第一百四十一回:C语言实例--文件操作:基于文件指针一)
- 地理定位跟踪
- 常见的命令行操作
- C++ ofstream和ifstream详细用法
- Java-Write Once,Run Anywhere
- Bootstrap进度条组件知识详解
- Eclipse 安装Properties Editor插件