zoukankan      html  css  js  c++  java
  • ztr loves lucky numbers--hdu5676(DFS)

    http://acm.hdu.edu.cn/showproblem.php?pid=5676

    题目大意: 给你一个数  让你找比这数大并且只含4和7  并且4和7的个数一样

    枚举从0到10的18次方之间的所有的可能的数  在用二分搜索

    因为20位超过longlong   所以特判一下

    #include<stdio.h>
    #include<math.h>
    #include<algorithm>
    #include<iostream>
    #include<string.h>
    #include<stdlib.h>
    #define INF 0x3f3f3f3f3
    
    using namespace std;
    
    long long  a[70000];
    long long int m;
    long long int cont=0;
    
    void DFS(int x,int y,long long num)
    {
        if(x==0 && y==0)
        {
            a[++cont]=num;
            return;
        }
    
        if(x>0)
            DFS(x-1,y,num*10+4);
        if(y>0)
            DFS(x,y-1,num*10+7);
    }
    
    void Find()
    {
        a[1]=47;
        a[2]=74;
        cont=2;
        for(int i=4;i<=18;i=i+2)
        {
            DFS(i/2,i/2,0);
        }
    }
    
    
    int main()
    {
        int T;
        Find();
        scanf("%d",&T);
        while(T--)
        {
            scanf("%lld",&m);
            if(m==0)
            {
                printf("47
    ");
                continue;
            }
            if(m>777777777444444444)
            {
                printf("44444444447777777777
    ");
                continue;
            }
            int l,r;
            l=1;r=cont;
            while(l<=r)
            {
                int mid=(l+r)/2;
                if(a[mid]>m)
                {
                    l=l;
                    r=mid-1;
                }
                else if(a[mid]<m)
                {
                    l=mid+1;
                    r=r;
                }
                else if(a[mid]==m)
                {
                    l=mid;
                    break;
                }
            }
            printf("%lld
    ",a[l]);
        }
        return 0;
    }
  • 相关阅读:
    case when if
    存储过程 、函数和事务
    poj 2263
    hdu -1874
    poj 2472
    2544 hdu
    模板floyed
    模板Dijkstra
    hdu 2066
    hdu 2544
  • 原文地址:https://www.cnblogs.com/linliu/p/5455285.html
Copyright © 2011-2022 走看看