zoukankan      html  css  js  c++  java
  • Codeforces686C【dfs】

    题意:
    n,m<=1e9
    设定一天n小时,一小时m分钟,
    显示时间的是一个7进制的表,
    问你在一天里出现多少个时刻,表中的数字要都不相同。
    思路:
    因为7进制,显示的数字肯定是0-7之间的。
    然后就是搜一下,注意显示的方式,所以m分钟有几位就是显示几位

    #include <bits/stdc++.h>
    #include<algorithm>
    using namespace std;
    
    typedef __int64 LL;
    
    int mm[25],hh[25];
    bool vis[10];
    LL ans,shi,fen;
    int cnt1,cnt2;
    LL n,m;
    
    void dfs_hh(int num,LL shi)
    {
        if(num==cnt1)
        {
            if(shi<n)
            {
                ans++;
                return;
            }
        }
        for(int i=0;i<7;i++)
        {
            if(!vis[i])
            {
                shi+=(LL)pow(7,num)*(LL)i;
                vis[i]=1;
                dfs_hh(num+1,shi);
                vis[i]=0;
                shi-=(LL)pow(7,num)*(LL)i;
            }
        }
    }
    
    void dfs_mm(int num,LL fen)
    {
        if(num==cnt2)
        {
            if(fen<m)
            {
                dfs_hh(0,0);
                return;
            }
        }
        for(int i=0;i<7;i++)
        {
            if(!vis[i])
            {
                vis[i]=1;
                fen+=(LL)pow(7,num)*(LL)i;
                dfs_mm(num+1,fen);
                vis[i]=0;
                fen-=(LL)pow(7,num)*(LL)i;
            }
        }
    }
    int main()
    {
        scanf("%I64d%I64d",&n,&m);
        LL nn,mm;
        nn=n,mm=m;
        if(nn>1) nn--;
        if(mm>1) mm--;
        cnt1=cnt2=0;
        while(nn)
        {
            ++cnt1;
            nn/=7;
        }
        while(mm)
        {
            ++cnt2;
            mm/=7;
        }
        ans=0;
        memset(vis,0,sizeof(vis));
        dfs_mm(0,0);
        printf("%I64d
    ",ans);
        return 0;
    }
    
  • 相关阅读:
    简单的javascript抽奖程序
    Linux 二层协议架构组织
    常用正则表达式总结
    很好的矩阵覆盖问题
    很好的求幂的题目
    不错的题目-n个数连接得到的最大值
    netstat命令介绍-要用熟
    一次完整的http事务
    Apache vs. Nginx
    Python学习-生成器
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934871.html
Copyright © 2011-2022 走看看