hdu 5676(dfs)
来源:互联网 发布:剑网三脸型数据萝莉 编辑:程序博客网 时间:2024/05/22 10:23
ztr loves lucky numbers
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
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解题思路:其实是一道比较简单的题目,用dfs搜一发即可。自己的代码写的好搓,参考了别人的代码。#include<cstdio>#include<cstring>using namespace std;char s[50];bool found;int four,seven,len;void write(int len){ for(int i = 0; i < len/2; i++) printf("4"); for(int i = 0; i < len/2; i++) printf("7"); printf("\n");}void dfs(long long ans, long long res, int lens){ if(lens == len && !found){ found = true; printf("%I64d\n", ans); } if(found) return; res = res * 10 + s[lens] - '0'; if(res <= ans * 10 + 4 && four < len / 2){ four++; dfs(ans * 10 + 4, res, lens + 1); four--; res /= 10; } if(found) return; if(res <= ans * 10 + 7 && seven < len / 2){ seven++; dfs(ans * 10 + 7, res, lens + 1); seven--; res /= 10; }}int main(){ int T;scanf("%d", &T); while(T--){ scanf("%s", s); len = strlen(s); if(len & 1) write(len + 1); else{ four = seven = 0; found = false; dfs(0, 0, 0); if(!found) write(len + 2); } } return 0;}
0 0
- hdu 5676(dfs)
- 【hdu】Zipper (dfs)
- hdu 2181 (dfs)
- hdu 1241 (dfs)
- hdu 1016 (DFS)
- hdu 1045 (DFS)
- hdu 2612(dfs)
- hdu 2614(dfs)
- hdu 2610 (dfs)
- hdu~1312(dfs)
- HDU-1035(dfs)
- HDU 5495(dfs)
- HDU 2181(DFS)
- HDU 1241(DFS)
- HDU-1010(DFS)
- HDU-1045(DFS)
- HDU 5323(DFS)
- HDU 5547(DFS)
- BZOJ2006——[NOI2010]超级钢琴
- 分析一款病毒程序
- java中string.trim()函数的使用
- Android ThumbnailUtils 视频缩略图
- 测试
- hdu 5676(dfs)
- JS中的JSON对象
- linux centos6.6 vsftpd服务安装
- 不用加减乘除做加法
- API例子:用Python驱动Firefox采集网页数据
- Linux /var/log下的各种日志文件详解
- vs2010 生成和调用dll和lib
- Mac 高速下载百度云文件
- C# 命名异常