Codeforces686C【dfs】
来源:互联网 发布:南大碎尸 知乎 编辑:程序博客网 时间:2024/06/07 15:04
题意:
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\n",ans); return 0;}
0 0
- Codeforces686C【dfs】
- DFS
- DFS
- dfs
- dfs
- dfs
- dfs
- DFS
- DFS
- dfs
- DFS
- DFS
- DFS
- dfs
- DFS
- dfs
- dfs
- dfs
- Object 类的 getClass方法
- LINUX 图形编辑进程一 --qt
- 第一章 day01 Java概述 环境搭建
- 午夜12点
- 深入分析ReentrantLock
- Codeforces686C【dfs】
- [noip2012pj] 质因数分解
- xcode小探索
- Sqoop调用存储过程
- py-faster-rcnn源码解读系列(二)——pascal_voc.py
- Java泛型编程
- Solr 6.0 学习环境搭建
- Codeforces510B【dfs】
- python linecache pachage