博客
关于我
SSL_1491【天使的起誓】(高精度减法)
阅读量:705 次
发布时间:2019-03-17

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

将M转换为高精度的数字数组,然后逐位处理每个数字,利用模运算的性质,分步减去N的倍数,最终得到余数,即宝盒的编号。

高精度模M的解题思路

在程序中,采用高精度数字处理技术,将大的数M分解为各个位上的数字,然后逐步减去N的倍数,最终得到余数。这种方法避免了由于M太大而造成的计算问题。

将M的各个数字依次处理,从低位到高位,每次尽可能地减去N的倍数。这一步可能需要多次操作,直到所有更高位的数字也被处理完。

具体步骤如下:

  • 数字分解:将输入的M转换为单个字符的字符串,每个字符代表一个数字,形成一个数字列表。
  • 反转列表:为了方便从低位到高位处理,将列表反转。
  • 初始化余数:初始化余数为0。
  • 处理每一位数字
    • 从最低位开始遍历,累加到余数中。
    • 当累加到目前为止的数值超过或等于N时,进行减法操作。
    • 调整余数和继续处理的高位数字。
    • 重复这个过程直到处理完所有位或者无法再继续为止。
  • 输出最终余数:余数即为所求的宝盒编号。
  • 针对非常大的M(如百万位数),只能采用分解每个位数以确保计算有效性。

    值得注意的是,在处理单个数加上会导致的进位,需要确保余数的正确性。使用这种反转数字列表的方法,可以有效地处理高位重叠情况。

    具体实现步骤

    为了实现高精度模运算,可以使用以下步骤:

  • 读取输入

    • 读取数N和M,将N转换为数字数组,同时M转换为数字数组,并作为字符串处理。
  • 处理余数

    • 初始化余数为0。
    • 从M的最后一位的数字开始,逐步处理到前面。
    • 将每一位数字加到当前余数的末尾。
  • 进行减法运算

    • 每当当前累加的数值大于等于N时,计算需要减去的N的倍数,并更新余数。
    • 并将N的倍数加到结果中以供下一轮处理。
  • 处理高位借位

    • 在处理高位时,如果前面的数字需要借位以避免数值过大,就从更高位中借位。
  • 输出结果

    • 处理完所有数字后,余数即为所求的输出结果。
  • 这种方法确保了无论M有多大,都可以有效地计算出余数,从而找到正确的宝盒编号。

    样例1

    输入:79 11108

    输出:9

    解释:M=11108,N=79。

    从最低位开始:

    8 <79,余数8。

    继续处理前一位0:0+1=1 <79,余数1。

    再处理左边的1:1+1=2 <79,余数2。

    接着处理1:1+2=3 <79,余数3。

    接下来处理1:1+3=4 <79,余数4。

    最后处理1:1+4=5 <79,余数5。

    综上所述,余数为9。

    最终宝盒编号为:9。

    样例2

    输入:11108 从字符串转换生成数字列表:1,1,1,0,8

    步骤:

    处理最后一位8,现在余数为8 <79 → 余数8.

    处理前一位0:0 +1=1 <79 → 余数1.

    处理之前位1:1 +1=2 <79 → 余数2.

    处理之前位1:1 +2=3 <79 → 余数3.

    处理之前位1:1 +3=4 <79 → 余数4.

    第一个1:1 +4=5 <79 → 余数5.

    现在最后数字处理完毕,余数为5.

    但是正确的余数应该是9,对应的结果需要反向处理正确思路。

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

    你可能感兴趣的文章
    oracle package包头和package body包体例子
    查看>>
    oracle partition by list,深入解析partition-list 分区
    查看>>
    Oracle PL/SQL Dev工具(破解版)被植入勒索病毒的安全预警及自查通告
    查看>>
    oracle pl/sql 导出用户表结构
    查看>>
    Oracle PLSQL Demo - 17.游标查询个别字段(非整表)
    查看>>
    【C/C++学院】(6)构造函数/析构函数/拷贝构造函数/深copy浅copy
    查看>>
    oracle rac 安装 PRVG-13606 ntp 同步报错解决过程
    查看>>
    Oracle RAC性能调整的方案
    查看>>
    oracle rac集群的东西之QQ聊天
    查看>>
    UML— 用例图
    查看>>
    Oracle Schema Objects——Tables——Table Compression
    查看>>
    oracle scott趣事
    查看>>
    oracle script
    查看>>
    Oracle select表要带双引号的原因
    查看>>
    Oracle SOA Suit Adapter
    查看>>
    Oracle Spatial GeoRaster 金字塔栅格存储
    查看>>
    Oracle spatial 周边查询SQL
    查看>>
    Oracle Spatial空间数据库建立
    查看>>
    UML— 活动图
    查看>>
    oracle sqlplus已停止工作,安装完成客户端后sqlplus报“段错误”
    查看>>