在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
题解 其实该题考察的就是一个质因数分解,然后进行组合即可。 证明如下: $n=p_1^{\alpha_1} \times p_2^{\alpha_2} \times ... \times p_k^{\alpha_k}$ $d=p_1^{\beta_1} \times p_2^{\beta_2} \times ... \times p_k^{\beta_k}$ 其中 $p_1、p_2、...、p_k$ 全是质数。 而 $0 \le \beta \le \alpha$,而 $\beta$ 的不同取值对应 $n$ 不同的约数,则 $\beta_1、\beta_2 ... \beta_k$ 总共组合数为 $(\alpha_1 + 1)(\alpha_2 + 1)+...+(\alpha_k + 1)$。 #include <iostream> using namespace std; typedef long long LL; const int N = 1024; int n; int p[N], ans; // 质因数分解 int main() { cin >> n; for (int i = 2; i <= n; ++i) { int a = i; for (int j = 2; j <= a / j; ++j) { if (a % j == 0) { while (a % j == 0) { p[j]++; a /= j; } } } if (a > 1) p[a]++; } for (int i = 2; i <= n; ++i) { if (p[i] > 0) { cout << i << " " << p[i] << endl; } } // 溢出风险 LL res = 1; for (int i = 2; i <= n; ++i) { if (p[i] > 0) { res = res * (p[i] + 1); } } cout << res << endl; return 0; } 这一题,y 总讲过,可考试的时候,简单以为是 $2$ 的倍数,呜呜呜~~~,对不起 y 总。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论