博客
关于我
西南科技大学第十六届ACM程序设计竞赛暨绵阳市邀请赛 (补题计划)(思维,数学等等)
阅读量:718 次
发布时间:2019-03-21

本文共 1064 字,大约阅读时间需要 3 分钟。

阅读并分析代码后,我们可以逐步解决每个问题。以下是对题目和代码的详细解释:

问题B. 签到题 (组合数学)

题意:从n个数中选出n-1个数,然后从这n-1个数中再选1个,组成一个长度为n的序列。要求序列中必须存在恰好两个相同的数字。

思路:

  • 选数步骤

    • 先从n个数中选出n-1个,有C(n, n-1) = n种选法。
    • 再从剩下的n-1个数中选1个,有n-1种选法。总的选数方法数为n * (n-1)。
  • 排列数字

    • 每种选法得到一个长度为n的数字序列。
    • 由于至少有一个数字被重复选了两次,序列中会有两个相同的数字。
    • 因此,序列的排列方式数为n!,但由于有两个相同的数字,排列方式数为n! / 2。
  • 处理大数取模

    • 由于计算n!可能会得到非常大的数值,使用模运算防止溢出。
    • 预处理n的阶乘,存储n! mod mod。
  • 计算公式为:[ \text{结果} = \left( \frac{n(n-1)}{2} \right) \times n! \mod \text{mod} ]

    AC代码解释:

  • 预处理阶乘:计算n的阶乘并取模,存储到arr[n]中。
  • 读取输入:使用自定义的read函数读取n。
  • 计算结果:使用公式计算结果并输出。
  • 问题C. 救救AR(思维,构造)

    题意:构造一个长度为n的字符串,由字符A和R组成,确保特定条件下的合法性。输出首次无法构造时为-1。

    思路:

  • 特殊情况处理

    • 当n < 4时,无法满足条件,输出-1。
  • 构造逻辑

    • 当n为偶数时,总是可以使用“AA”开头,后续补R,总R数为n/2。例如:n=2时输出“AAR”。
    • 当n为奇数时,开头构造“AR”,然后剩下的n-1个位置中处理n-1个段,其中n-1是偶数,使用“AA”随后补R。
  • AC代码解释:

  • 特殊情况处理:n < 4时直接输出-1。
  • 构造思路
    • n为偶数时,输出“AA”+ (n/2)个“R”。
    • n为奇数时,输出“A”+“R”+ (n-1)/2个“R”。
  • 问题E. 呼兰河传(思维)

    题意:计算多个数字的最小公倍数(LCM),使用质因数分解。

    思路:

  • 质因数分解

    • 对于每个数,分解质因数并统计每个质数的最大指数。
  • 快速幂计算

    • 每个质数的幂次计算后乘起来,模运算处理大数。
  • AC代码解释:

  • 预处理:数组vis记录质数的最大指数。
  • 分解质因数:使用内联函数solve进行质因数分解。
  • 快速幂:计算每个质数的幂次模运算。
  • 结果计算:计算所有质数幂次的乘积模mod。
  • 结果

    每个问题的解答基于分析题意和代码功能,代码预先处理阶乘和质因数,确保高效处理大数。

    转载地址:http://biirz.baihongyu.com/

    你可能感兴趣的文章
    NHibernate示例
    查看>>
    nid修改oracle11gR2数据库名
    查看>>
    NIFI1.21.0/NIFI1.22.0/NIFI1.24.0/NIFI1.26.0_2024-06-11最新版本安装_采用HTTP方式_搭建集群_实际操作---大数据之Nifi工作笔记0050
    查看>>
    NIFI1.21.0_java.net.SocketException:_Too many open files 打开的文件太多_实际操作---大数据之Nifi工作笔记0051
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_插入时如果目标表中已存在该数据则自动改为更新数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0058
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0_Postgresql和Mysql同时指定库_指定多表_全量同步到Mysql数据库以及Hbase数据库中---大数据之Nifi工作笔记0060
    查看>>
    NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
    查看>>
    NIFI1.21.0最新版本安装_配置使用HTTP登录_默认是用HTTPS登录的_Https登录需要输入用户名密码_HTTP不需要---大数据之Nifi工作笔记0051
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增加修改实时同步_使用JsonPath及自定义Python脚本_03---大数据之Nifi工作笔记0055
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
    查看>>
    NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现update数据实时同步_实际操作05---大数据之Nifi工作笔记0044
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>