Codeforces686C【dfs】
2024-08-23 13:01:34
题意:
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;
}
最新文章
- c/c++常用网址
- 3秒后自动跳转页面【js】
- Python中,添加写入数据到已经存在的Excel的xls文件,即打开excel文件,写入新数据
- 【LeetCode OJ】Binary Tree Maximum Path Sum
- C# 绘制统计图(柱状图, 折线图, 扇形图)
- 09_rlCoachKin讲解
- 了解node.js
- 用win32API 实现TextBox水印特效
- Koa源码分析(一) -- generator
- matplotlib绘图2
- bzoj1002/luogu2144 轮状病毒 (dp)
- Ping 不通的原因分析
- 怎么在sublime/emmet中加自定义的内容-sublime使用心得(3)
- springmvc使用包装的pojo接收商品信息的查询条件
- 在微信开发中如果WeixinJSBridge.call(&#39;closeWindow&#39;);关闭窗口无效!
- 自然语言处理系列-4条件随机场(CRF)及其tensorflow实现
- 【Java面试题】21 Java中的异常处理机制的简单原理和应用。
- No Mapping For GET ";xxx.do";
- 再装虚拟机及git
- Numpy入门笔记第一天
热门文章
- jQuery -&;gt; 获取后代元素的三种方法
- Html5培训之精髓
- 关于文件与文件系统的压缩与打包命令-Linux(笔记)
- [leetcode解题记录]Jump Game和Jump Game II
- 【iOS开发系列】cell切割线置顶
- spring核心框架体系结构(各个jar包作用)
- eclipse新建安卓项目helloworld
- poj 1195 Mobile phones 解题报告
- 编译含有Servlet的java文件
- CoderForces343D:Water Tree(dfs序+线段树&;&;特殊处理)