1 条题解
-
0
参考答案:
#include<iostream> #include<vector> #include<algorithm> using namespace std; const int N = 50010; int st[N]; int sum[N]; int primes[N]; int cnt; vector<int> res; int a, b; void get_primes(int n) { for (int i = 2; i <= n; ++i) { if (!st[i]) primes[++cnt] = i; for (int j = 1; primes[j] <= n / i; ++j) { st[primes[j] * i] = 1; if (i % primes[j] == 0) break; } } } int get(int a, int b) { int res = 0; while (a) { res += a / b; a /= b; } return res; } vector<int> mul(vector<int> a, int b) { reverse(a.begin(), a.end()); vector<int> c; int t = 0; for (int i = 0; i < a.size(); ++i) { t += a[i] * b; c.push_back(t % 10); t /= 10; } while (t) { c.push_back(t % 10); t /= 10; } reverse(c.begin(), c.end()); return c; } int main() { cin >> a >> b; get_primes(a); for (int i = 1; i <= cnt; ++i) { int p = primes[i]; sum[i] = get(a, p) - get(b, p) - get(a - b, p); } res.push_back(1); for (int i = 1; i <= cnt; ++i) { for (int j = 0; j < sum[i]; ++j) { res = mul(res, primes[i]); } } for (int i = 0; i < res.size(); ++i) printf("%d", res[i]); cout << endl; return 0; }
- 1
信息
- ID
- 5366
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 3
- 已通过
- 1
- 上传者