您现在的位置是:主页 > news > 六安 网站建设/百度指数热度榜
六安 网站建设/百度指数热度榜
admin2025/5/2 20:09:57【news】
简介六安 网站建设,百度指数热度榜,石油网站编辑怎么做,网站为什么要挂服务器思路: 1.暴力枚举出99个数的全排列,然后用一个长度为99的数组保存全排列的结果 2.从全排列的结果中用两重循环暴力分解出三段,每段代表一个数 3.验证枚举出来的三个数是否满足题干条件,若满足则计数 #include <iostream> …
六安 网站建设,百度指数热度榜,石油网站编辑怎么做,网站为什么要挂服务器思路:
1.暴力枚举出99个数的全排列,然后用一个长度为99的数组保存全排列的结果 2.从全排列的结果中用两重循环暴力分解出三段,每段代表一个数 3.验证枚举出来的三个数是否满足题干条件,若满足则计数
#include <iostream>
…
思路:
1.暴力枚举出99个数的全排列,然后用一个长度为99的数组保存全排列的结果
2.从全排列的结果中用两重循环暴力分解出三段,每段代表一个数
3.验证枚举出来的三个数是否满足题干条件,若满足则计数
#include <iostream>
#include <cstring>
using namespace std;
int visit[11]; //判重
int a[11]; //记录之间值
int n;
int res;
int cal(int l, int r)
{//计算a[l..r]变成一个数字的值int ans = 0;for (int i = l;i < r;i++){ans = ans * 10 + a[i];}return ans;
}
void dfs(int len)
{if(len==9){ for (int i = 1;i <= 7;i++) //第一个中断点枚举到7,因为后面要留2元素{int a = cal(0, i); //从0到第一个中断点的值for (int j = i + 1;j < 9;j++) //枚举第二个中断点{int b = cal(i, j);int c = cal(j, 9);if (a * c + b == n * c) //由于b/c是整除,需要转换成这种形式,同乘以cres++;}}}for (int i = 1;i <= 9;i++) if (!visit[i]){visit[i] = 1;a[len] = i;dfs(len + 1);a[len] = 0;visit[i] = 0;}
}
int main()
{cin >> n;dfs(0);cout << res;
}