博客
关于我
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/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | OpenCV如何读取仪表中的指针刻度
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(一) :直接拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(三):基于特征匹配拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(二) :基于模板匹配拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(四):基于Stitcher类拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测(建议收藏!)
    查看>>
    OpenCV与AI深度学习 | PaddleOCR 2.9 发布, 正式开源文本图像智能分析利器
    查看>>
    OpenCV与AI深度学习 | SAM2(Segment Anything Model 2)新一代分割一切大模型介绍与使用(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | T-Rex Label !超震撼 AI 自动标注工具,开箱即用、检测一切
    查看>>
    OpenCV与AI深度学习 | YOLO11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)
    查看>>
    OpenCV与AI深度学习 | YOLOv10在PyTorch和OpenVINO中推理对比
    查看>>
    OpenCV与AI深度学习 | YOLOv11来了:将重新定义AI的可能性
    查看>>
    OpenCV与AI深度学习 | YOLOv8自定义数据集训练实现火焰和烟雾检测(代码+数据集!)
    查看>>
    OpenCV与AI深度学习 | YOLOv8重磅升级,新增旋转目标检测,又该学习了!
    查看>>
    OpenCV与AI深度学习 | 一文带你读懂YOLOv1~YOLOv11(建议收藏!)
    查看>>
    OpenCV与AI深度学习 | 五分钟快速搭建一个实时人脸口罩检测系统(OpenCV+PaddleHub 含源码)
    查看>>
    OpenCV与AI深度学习 | 什么是 COCO 数据集?
    查看>>
    OpenCV与AI深度学习 | 低对比度缺陷检测应用实例--LCD屏幕脏污检测
    查看>>
    OpenCV与AI深度学习 | 使用 MoveNet Lightning 和 OpenCV 实现实时姿势检测
    查看>>
    OpenCV与AI深度学习 | 使用 OpenCV 创建自定义图像滤镜
    查看>>