hdu 5676 ztr loves lucky numbers
来源:互联网 发布:unity3d设置中文界面 编辑:程序博客网 时间:2024/05/29 04:07
这道题是 BestCoder Round #82 (div.2) 的第二道题,题意很简单,首先定义一个幸运数的概念。幸运数就是至少包含一个4或者7,并且4的个数和7的个数必须相等,例如4、7,4477.....给你一个数,要你找到最小的幸运数,但不能小于所给定的这个数。做比赛的时候,我的同学一上来就模拟结果可想而知,我也想了下模拟,发现很容易漏掉一些情况,想到了暴力,给定的数小于10e18,暴力的话就是找到所有的幸运数,共有2e18次方算了下不大,但是有10e5组数据,但是就觉得不行,也就没继续想下去,赛后看了题解暴力+二分,我的天,二分.......顿时感觉自己懵逼了,我怎么没想到呢?还是实力弱啊。赛后用暴力+二分写了一发,WA....这什么情况,仔细再想下,有一种特殊的情况要特判,就是输入10e18次方的时候输出的结果是44444444447777777777,已经超出了长整型的范围,所以当二分的结果大于最后一个数的时候,结果为44444444447777777777就ok了。二分这种思想还真的是很重要的啊!
#include <iostream>#include <cstdio>#include <algorithm>using namespace std;typedef long long LL;const int N = 300005;LL save[N];int cnt = 0;void dfs(LL value, int num4, int num7){ if(value>=1e18) return ; if(num4 == num7 && num4>0) save[cnt++] = value; dfs(value*10+4, num4+1, num7); dfs(value*10+7, num4, num7+1);}int binary_reserach(LL value){ int l = 0, r = cnt-1, mid; while(l<=r) { int mid = (l+r)/2; if(save[mid] < value) l = mid+1; else r = mid-1; } return l;}int main(){ dfs(0, 0, 0); sort(save, save+cnt); //cout<<save[cnt-1]<<endl; int T; scanf("%d", &T); while(T--) { LL data; scanf("%I64d", &data); int index = binary_reserach(data); if(index == cnt) cout<<"44444444447777777777"<<endl; else cout<<save[index]<<endl; } return 0;}
0 0
- HDU 5676 ztr loves lucky numbers
- HDU 5676 ztr loves lucky numbers
- Hdu 5676 ztr loves lucky numbers
- HDU 5676 ztr loves lucky numbers【DFS】
- 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 5676ztr loves lucky numbers
- HDU 5676 ztr loves lucky numbers
- HDU 5676 ztr loves lucky numbers
- hdu 5676 ztr loves lucky numbers(STL大法好)
- hdu 5676 ztr loves lucky numbers【dfs+剪枝】
- hdu 5676 ztr loves lucky numbers(STL大法好)
- HDU 5676 ztr loves lucky numbers dfs+二分
- hdu 5676ztr loves lucky numbers(全排列函数)
- HDU 2066 一个人的旅行
- 数字图像处理不得不知的点(3)
- 地图转换之高德、百度
- ngnix ab压强测试
- Largest Number
- hdu 5676 ztr loves lucky numbers
- hdu 5675 ztr loves math
- C++ Primer 学习笔记_106_特殊工具与技术 --局部类
- 关键字搜索十次存memcache
- Ajax学习笔记
- Awesome Erlang
- vim中的数字,字符替换
- java enum(枚举)使用详解 + 总结
- android启动过程