题目大意:给出一个数字,求不小于它且由4,7两个数字组成,4跟7的出现次数要一样多。
思路:DFS
每次递归累计4,7出现的个数,直到满足题意即可。
注意要long long
代码:
1#include <iostream>
2#include <cstdio>
3#include <cstring>
4#include <string>
5#include <cmath>
6#include <algorithm>
7
8using namespace std;
9
10long long n,res;
11
12void dfs(long long x,int four,int seven)
13{
14 if(x>1000000000000)
15 return;
16 if(x>=n&&four==seven)
17 {
18 if(res==0||res>x)
19 res=x;
20 }
21 dfs(x*10+4,four+1,seven);
22 dfs(x*10+7,four,seven+1);
23}
24
25int main()
26{
27 while(~scanf("%I64d",&n))
28 {
29 res=0;
30 dfs(4,1,0);
31 dfs(7,0,1);
32 printf("%I64d\n",res);
33 }
34 return 0;
35}
36