# Lucky Numbers (easy)

59人阅读 评论(0)

Petya 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 Petya came across a positive integer n. Help him to find the least super lucky number which is not less than n.

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <cstring>
#include <functional>
#include <cmath>
using namespace std;

int k=0;
__int64 table[110];
void dfs(int num,int n4,int n7,int nowp,int allp)
{
if(n4==n7)
{
table[k]=num;
k++;
}
if(nowp==allp)
return;
num*=10;
num+=4;
dfs(num,n4+1,n7,nowp+1,allp);

num/=10;
num*=10;
num+=7;
dfs(num,n4,n7+1,nowp+1,allp);
}
int main()
{
//freopen("in.txt","r",stdin);
int n;
dfs(4,1,0,1,8);
dfs(7,0,1,1,8);
table[k]=4444477777;
sort(table,table+110);
while(~scanf("%d",&n))
{
int i;
for(i=0;i<110;i++)
if(table[i]>=n)
break;
printf("%I64d\n",table[i]);
}
return 0;
}

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：3185次
• 积分：597
• 等级：
• 排名：千里之外
• 原创：59篇
• 转载：0篇
• 译文：0篇
• 评论：0条
友情链接
评论排行