Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
29749 | 23级.刘展翔 | 【J】T2 | C++ | 通过 | 100 | 2 MS | 292 KB | 1109 | 2024-05-26 17:40:36 |
#include <iostream> #include <vector> using namespace std; const int maxn = 25; int n, k, a[maxn]; bool is_used[maxn]; vector<int> sum; int digit(int x) { int a = 0; while (x) { a++; x /= 10; } return a; } bool check(int x) { for (auto i = sum.begin(); i != sum.end(); i++) { if (x == *i) { return 0; } } return 1; } void f(int x, int y) { if (x == 0) { if (check(y)) { sum.push_back(y); } return; } for (int i = 0; i < n; i++) { if (is_used[i]) { continue; } is_used[i] = 1; int res = y; for (int j = 0; j < digit(a[i]); j++) { res *= 10; } res += a[i]; f(x - 1, res); is_used[i] = 0; } } int main() { // freopen("b.in", "r", stdin); // freopen("b.out", "w", stdout); cin >> n >> k; for (int i = 0; i < n; i++) { cin >> a[i]; } f(k, 0); cout << sum.size() << endl; return 0; }