Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
30396 | gaochunzhen | 【S】T1 | C++ | 运行出错 | 90 | 111 MS | 131324 KB | 979 | 2024-07-19 13:31:26 |
#include <bits/stdc++.h> using namespace std; typedef long long ll; vector<ll> fac; ll x, k, m, now, ans; void dfs(ll u, ll d) { if (u == 1) { ans++; if (++now == m) { printf("%lld\n", ans); fclose(stdin); fclose(stdout); exit(0); } return; } if (d == k) { ans += u; if (++now == m) { printf("%lld\n", ans); fclose(stdin); fclose(stdout); exit(0); } return; } for (ll i : fac) { if (i > u) break; if (u % i) continue; dfs(i, d + 1); } } int main() { scanf("%lld%lld%lld", &x, &k, &m); for (ll i = 1; i <= sqrtl(x); i++) { if (x % i) continue; fac.push_back(i); if (i != x / i) fac.push_back(x / i); } sort(fac.begin(), fac.end()); dfs(x, 0); printf("%lld\n", ans); return 0; }