Project Euler problem 43
2012-11-05 21:09
295 查看
这题的话
直接next_permutation搞也行
10!也就300多W
或者像这样,DFS着来搞 效率会快很多
直接next_permutation搞也行
10!也就300多W
或者像这样,DFS着来搞 效率会快很多
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <queue> #include <set> #include <stack> #include <cmath> #include <map> #include <ctime> #define MAXN 1111111 #define MAXM 400005 #define INF 2000000007 #define PI acos(-1.0) using namespace std; int b[7] = {2, 3, 5, 7, 11, 13, 17}; long long sum = 0; void dfs(long long num, int bitmask, int deep) { if(bitmask == 1023) { sum += num; return; } for(int i = 0; i < 10; i++) if((bitmask & (1 << i)) == 0) { int f = (num % 100) * 10 + i; if(f % b[deep + 1] == 0) dfs(num * 10 + i, bitmask | (1 << i), deep + 1); } } int main() { for(int i = 0; i < 10; i++) for(int j = 0; j < 10; j++) for(int k = 0; k < 10; k++) if(i != j && i != k && j != k) { int f = i * 100 + j * 10 + k; dfs(f, (1 << i) + (1 << j) + (1 << k), -1); } return 0; }
相关文章推荐
- Project Euler Problem 51-70
- project euler Problem 15
- project euler Problem 25
- Project Euler Problem 76-整数分拆
- http://projecteuler.net/problem=6 [Answer:25164150]
- http://projecteuler.net/problem=15 [Answer:137846528820]
- http://projecteuler.net/problem=34 [Answer:40730]
- Project Euler -> problem 4
- Projecteuler Problem 1-10
- Project Euler Problem 6: Sum square difference
- project euler problem 10:Summation of primes
- Project Euler Problem 25 1000-digit Fibonacci number
- project euler problem 25 大数连加Fibonacci序列
- Project Euler Problem 32 Pandigital products
- Project Euler Problem 38 Pandigital multiples
- Project Euler Problem 21
- Project Euler Problem 76-整数分拆
- Project Euler problem 8
- Project Euler problem 19
- Project Euler problem 29