统计
  • 建站日期:2019-12-01
  • 文章总数:2331 篇
  • 评论总数:2160 条
  • 分类总数:22 个
  • 最后更新:4月1日
文章 未分类

Java 蓝桥杯 国赛 第十一届 C组 试题D:阶乘约数

程序员阿鑫
首页 未分类 正文


Java蓝桥杯国赛第十一届C组试题D:阶乘约数
-程序员阿鑫-带你一起秃头
-第1
张图片

Java蓝桥杯国赛第十一届C组试题D:阶乘约数 -程序员阿鑫-带你一起秃头 -第1 张图片

#D 阶乘约数

本题总分:10 分


问题描述

定义阶乘 n ! = 1 × 2 × 3 × ⋅ ⋅ ⋅ × n n! = 1 × 2 × 3 × · · · × nn!=1×2×3××n
请问 100 ! 100!100! (100 100100 的阶乘)有多少个约数。


答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。


39001250856960000

calcCode:

  1. import java.math.BigInteger;
  2. public class Test {
  3. public static void main(String[] args) {
  4. BigInteger num = BigInteger.ONE;
  5. for (int i = 1; i <= 100; i++)
  6. num = num.multiply(new BigInteger(String.valueOf(i)));
  7. long res = 1;
  8. for (BigInteger i = new BigInteger("2"); i.multiply(i).compareTo(num) <= 0; i = i.add(BigInteger.ONE)) {
  9. long cnt = 1;
  10. while (num.mod(i).compareTo(BigInteger.ZERO) == 0) {
  11. num = num.divide(i);
  12. cnt++;
  13. }
  14. if (cnt > 1)
  15. res *= cnt;
  16. }
  17. if (num.compareTo(BigInteger.ONE) > 0) res <<= 1;
  18. System.out.println(res);
  19. }
  20. }

算术基本定理求约数个数
再给你们一个模板

  1. public class Test {
  2. public static void main(String[] args) { System.out.println(factors(100)); }
  3. static int factors(long n) {
  4. int res = 1, now;
  5. for (int i = 2; i * i <= n; i++) {
  6. now = 1;
  7. while (n % i == 0) {
  8. n /= i;
  9. now++;
  10. }
  11. if (now > 1)
  12. res *= now;
  13. }
  14. return n > 1? res << 1 : res;
  15. }
  16. }

最近在学C,C的标准库中没大整形,所以就变换出了这种写法

    1. #include <stdio.h>
    2. #include <string.h>
    3. int main() {
    4. int factor[100];
    5. long long res = 1;
    6. memset(factor, 0x00, sizeof(factor));
    7. for (int i = 100, n = 100; i; n = --i)
    8. for (int k = 2; k <= n; k++)
    9. while (!(n % k)) {
    10. factor[k]++;
    11. n /= k;
    12. }
    13. for (int i = 0; i < 100; i++)
    14. res *= factor[i] + 1;
    15. printf("%lld", res);
    16. }

    以上是《Java 蓝桥杯 国赛 第十一届 C组 试题D:阶乘约数》的全部内容,

    感谢您对程序员阿鑫博客的支持!

    版权说明
    文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
    版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

    -- 展开阅读全文 --
    这篇文章最后更新于2020-12-28,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
    Java 蓝桥杯 国赛 第十一届 C组 试题E:本质上升序列
    « 上一篇
    Java 蓝桥杯 国赛 第十一届 C组 试题C: 扩散
    下一篇 »

    发表评论

    • 泡泡
    • 阿呆
    • 阿鲁

    已有 1 条评论

    1. 万事可乐 Lv.1

      说道:大佬,为什么最后还要res<<=1啊?


    扫一扫,支付10
    支付完成后,请等待5秒左右。手机请点此支付!