2401_83163654 2024-03-18 13:07 采纳率: 100%
浏览 6
已结题

产生数问题,高精度部分不明白,能否用数字说明,感觉不需要高精度

img

img

img

高精度部分不明白,能否用数字说明,感觉不需要高精度,而且无数个小数相乘他怎么会做到一位位确定而不变动

  • 写回答

5条回答 默认 最新

  • 关注

    2401_83163654 下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    在给出解决方案之前,让我们先理清楚问题中的一些概念和代码部分的含义:

    1. 高精度:指在计算机中处理大数或小数时需要使用的一种算法和数据结构。通常情况下,计算机对于整数和小数运算的精度是有限的,当处理超过计算机能够表示的范围时,就需要使用高精度算法来处理。

    2. num[i]:表示数字i出现的次数。

    3. cng[i][j]:表示数字i在转换为另一个数字后的结果。例如,cng[2][1] = 4表示将数字2转换为4。

    4. n[]:表示输入的数字序列。

    5. ans[]:表示计算结果。

    6. find(x, y):在cng数组中查找数字x是否转换为数字y。

    基于以上理解,根据代码逐行解析该问题的解决方案如下:

    1. 首先在main函数中,通过读取输入的数字序列n[],将其存储在n[]数组中。

    2. 接下来,通过循环读取输入的转换规则a和b,将规则存储在cng数组中。例如,cng[2][3] = 5表示数字2转换为5。

    3. 然后,从0到9遍历数字i。对于数字i,再访问cng数组中的每个元素cng[i][j],将转换数字cng[i][j]添加到数组cng[i]中,并增加num[i]的计数。

    4. 随后,对于数字1到k循环遍历,计算ans[]的值。在这个循环中,首先将d赋值为n[i],即当前的输入数字。

    5. 如果num[d]大于0意味着该数字有转换规则,我们需要计算ans[]的新值。利用两个循环,首先处理ans中的每个元素ans[i],乘以(num[d]+1),然后加上前一次循环中的进位p。

    6. 将ans[i]除以10以获取进位p,取余数ans[i]%10作为当前位置的结果。

    7. 再次遍历ans[],从最高位开始,如果发现ans[i]的值大于0,则将ok标记设为1,并输出ans[i]。

    8. 最后,返回0表示程序运行结束。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 3月29日
  • 已采纳回答 3月21日
  • 创建了问题 3月18日

悬赏问题

  • ¥20 js怎么实现跨域问题
  • ¥15 C++dll二次开发,C#调用
  • ¥18 c语言期中复习题(求解)
  • ¥15 请教,如何使用C#加载本地摄像头进行逐帧推流
  • ¥15 Python easyocr无法顺利执行,如何解决?
  • ¥15 求一个十多年前的国产符号计算软件(MMP)+用户手册
  • ¥15 为什么会突然npm err!啊
  • ¥15 java服务连接es读取列表数据,服务连接本地es获取数据时的速度很快,但是换成远端的es就会非常慢,这是为什么呢
  • ¥15 vxworks交叉编译gcc报错error: missing binary operator before token "("
  • ¥15 JSzip压缩文件时如何设置解压缩密码