Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <algorithm>
- #include <iostream>
- int check(int *a)
- {
- int c[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
- int i;
- for (i = 0; i < 10; i++) {
- c[a[i]]++;
- if (c[a[i]] > 2)
- return 0;
- }
- return 1;
- }
- int main()
- {
- int cnt = 0;
- int a[10];
- unsigned long long res = 0;
- for (a[0] = 0; a[0] < 16; a[0]++) {
- for (a[1] = a[0]; a[1] < 16; a[1]++) {
- for (a[2] = a[1]; a[2] < 16; a[2]++) {
- for (a[3] = a[2]; a[3] < 16; a[3]++) {
- for (a[4] = a[3]; a[4] < 16; a[4]++) {
- for (a[5] = a[4]; a[5] < 16; a[5]++) {
- for (a[6] = a[5]; a[6] < 16; a[6]++) {
- for (a[7] = a[6]; a[7] < 16; a[7]++) {
- for (a[8] = a[7]; a[8] < 16; a[8]++) {
- for (a[9] = a[8]; a[9] < 16; a[9]++) {
- if (!check(a))
- continue;
- cnt += 1;
- int numdub = 0;
- for (int s = 1; s < 10; s++) {
- if (a[s] == a[s-1])
- numdub++;
- }
- res += 3628800 / (1 << numdub);
- }}}}}}}}}}
- std::cout << cnt << std::endl;
- std::cout << res << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement