首页 > 其他分享 >HDU 5676 ztr loves lucky numbers

HDU 5676 ztr loves lucky numbers

时间:2022-10-18 15:00:25浏览次数:35  
标签:HDU int mid LL cnt lucky 5676 include


ztr loves lucky numbers

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 51    Accepted Submission(s): 24


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

(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
把1到10^20中满足条件的全部枚举出来,然后再二分查找就可以了。注意20位最小的44444444447777777777在是超long long int 的只好进行一下特判#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <math.h>
#include <stdio.h>
#include <string>
#include <map>

using namespace std;
#define MAX 600000
typedef __int64 LL;
LL n;
LL a[MAX];
int cnt;
void dfs(LL x,LL y,LL num)
{
if(x==0&&y==0)
{
a[++cnt]=num;
return;
}
if(x>0)
dfs(x-1,y,num*10+4);
if(y>0)
dfs(x,y-1,num*10+7);
}
void fun()
{
a[1]=47;
a[2]=74;
cnt=2;
for(int i=4;i<=18;i+=2)
{
dfs(i/2,i/2,0);
}
}
int main()
{
int t;
scanf("%d",&t);
fun();
sort(a+1,a+cnt+1);
while(t--)
{
scanf("%I64d",&n);
if(n>777777777444444444)
{
cout<<"44444444447777777777"<<endl;
continue;
}
LL l=1,r=cnt;
LL res;
while(l<=r)
{
LL mid=(l+r)/2;
if(a[mid]>=n)
{
res=a[mid];
r=mid-1;
}
else
l=mid+1;
}
printf("%I64d\n",res);
}
return 0;
}


 



标签:HDU,int,mid,LL,cnt,lucky,5676,include
From: https://blog.51cto.com/u_15834522/5766704

相关文章

  • HDU 1885 Key Task(BFS)
    KeyTaskTimeLimit:3000/1000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):1809    AcceptedSubmission(s):770Pr......
  • HDU-1054 Strategic Game(树形DP)
    StrategicGameTimeLimit:20000/10000ms(Java/Other)MemoryLimit:65536/32768K(Java/Other)TotalSubmission(s):17AcceptedSubmission(s):11Font:......
  • HDU-1520 Anniversary party(树形DP)
    AnniversarypartyTimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):7566AcceptedSubmission(s):3321P......
  • HDU 4245
    ​​HDU-4245​​​​AFamousMusicComposer​​​​Submit​​​ ​​Status​​DescriptionMr.Bisafamousmusiccomposer.Oneofhismos......
  • HDU 1698 Just a Hook(线段树)
    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1698思路:updata()区间替换,query()区间求和先上3篇博客1:http://blog.sina.com.cn/s/blog_a2dce6b30101l8bi.html 2:ht......
  • HDU 5373 The shortest problem(判断一个数能否被11整除)
    题目地址;​​点击打开链接​​思路:参考队友的代码写的,资料地址:​​点击打开链接​​ 怎样判断一个数能不能被11整除?判断一个数能不能被11整除与判断一个数能不能被......
  • Luckysheet使用注意
    1.支持类型Luckysheet,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。但目前仅支持xlsx格式。2.引入须知<linkrel='stylesheet'href='./plugins/......
  • HDU7239 Matryoshka Doll (DP)
    题目大意:题目描述.有......
  • HDU4417 Super Mario (主席树)
    主席树另一模板。查询的是[L,R]中<=h的个数。1#include<bits/stdc++.h>2usingnamespacestd;3#definelctr[i].ch[0]4#definerctr[i].ch[1]5#define......
  • HDU3652 B-number
    B-number题意:求1-n(<=1e9)中是13的倍数且包含“13”的个数。多组数据。数位DP#include<bits/stdc++.h>usingnamespacestd;intn;intdat[15],cnt;intf[13][11......