Codeforces Round #359 (Div. 2) C. Robbers' watch (暴力DFS)
2016-08-01 00:48
501 查看
题目链接:http://codeforces.com/problemset/problem/686/C
给你n和m,问你有多少对(a, b) 满足0<=a <n 且 0 <=b < m 且a的7进制和n-1的7进制位数相同 且b的7进制和m-1的7进制位数相同,还有a和b的7进制上的每位上的数各不相同。
看懂题目,就很简单了,先判断a和b的7进制位数是否超过7,不超过的话就dfs暴力枚举计算就可以了。
给你n和m,问你有多少对(a, b) 满足0<=a <n 且 0 <=b < m 且a的7进制和n-1的7进制位数相同 且b的7进制和m-1的7进制位数相同,还有a和b的7进制上的每位上的数各不相同。
看懂题目,就很简单了,先判断a和b的7进制位数是否超过7,不超过的话就dfs暴力枚举计算就可以了。
//#pragma comment(linker, "/STACK:102400000, 102400000") #include <algorithm> #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #include <vector> #include <cmath> #include <ctime> #include <list> #include <set> #include <map> using namespace std; typedef long long LL; typedef pair <int, int> P; const int N = 1e5 + 5; int num[10], n, m, ans; bool vis[10]; int get(int num[], int len) { int res = 0, temp = 1; for(int i = len; i >= 1; --i) { res += num[len] * temp; temp *= 7; } return res; } void dfs(int len1, int len2, int dep) { if(dep == len1 + len2) { int sum = 0, temp = 1; for(int i = len1+len2; i >= len1+1; --i) { sum += temp*num[i]; temp *= 7; } if(sum < m) ans++; return ; } else if(dep == len1) { int sum = 0, temp = 1; for(int i = len1; i >= 1; --i) { sum += temp*num[i]; temp *= 7; } if(sum >= n) return ; } dep++; for(int i = 0 ; i < 7 ; ++i) { if(vis[i]) continue; vis[i] = true; num[dep] = i; dfs(len1, len2, dep); vis[i] = false; } } int main() { cin >> n >> m; int cnt1 = 0, cnt2 = 0, temp = n - 1; do { temp /= 7; ++cnt1; } while(temp); temp = m - 1; do { temp /= 7; ++cnt2; } while(temp); if (cnt1 + cnt2 > 7) { cout << 0 << endl; } else { dfs(cnt1, cnt2, 0); cout << ans << endl; } return 0; }
相关文章推荐
- Codeforces Round #359 (Div. 1) A. Robbers' watch 暴力
- Codeforces Round #359 (Div. 2) C. Robbers' watch 搜索
- Codeforces Round #459 (Div. 2)-D(dfs暴力)
- codeforces 686C C. Robbers' watch(dfs)
- Codeforces Round #286 (Div. 2)B. Mr. Kitayuta's Colorful Graph(dfs,暴力)
- Codeforces Round #359 (Div. 2) C. Robbers' watch 鸽巢+stl
- Codeforces Round #359 (Div. 1) A. Robbers' watch 暴力
- Codeforces Round #359 (Div. 2) C. Robbers' watch (DFS)
- cf264 div2E题 E. Caisa and Tree(dfs转化为有根树暴力求解)
- 【Codeforces Round 272 (Div 2)B】【暴力dfs or 组合数】Dreamoon and WiFi 问号填加减方案数使得最后恰好增量为aim
- Codeforces Round #359 (Div. 2) C. Robbers' watch
- Codeforces Round #340 (Div. 2) C. Watering Flowers 暴力
- Codeforces Round #385 (Div. 2) A,B,C 暴力,模拟,并查集
- SDUT-3469 深度优先搜索练习之神奇的矩环(暴力/DFS)
- Codeforces Round #407 (Div. 2)-E-The Great Mixing-滚动数组或者dfs
- uva 301 Transportation 铁路公司的阳谋 纯dfs暴力
- 2016计蒜之道初赛第四场-----遗失的支付宝密码(简单)【暴力Dfs】
- Codeforces Round #447 (Div. 2) D. Ralph And His Tour in Binary Country(dfs)
- Codeforces Round #428 (Div. 2) C. Journey(dfs deep
- poj 3009 dfs暴力解决最短路