c/c++语言开发共享反向获得剩余?

我正在取一个用户输入的数字,加上7,然后除以10,然后取余数并使用该值作为我的新值。 我们还假设输入数字总是长4个字符,因此例如用户将输入1234,或1235或9999等。它将永远不会更大或更小。

这看起来像这样:

int num; printf("Input a number: "); scanf("%d", &num); num = (num + 7) % 10; printf("Here is the number after my calculations: %d", num); 

现在我需要弄清楚如何反过来。

如果我只给出余数,我如何得到输入的原始数字?

    有许多输入将提供相同的输出(例如,所有1000,1010,1020,1030等将返回7)。 因此,没有办法恢复四位数的原件。

    另一方面,如果您知道输入是单位数,则可以执行以下操作来恢复它:

     num = (num + 3) % 10; 

    (在模10算术中加3表示与减去7相同)

    在其他情况下你可以恢复这个数字,但不幸的是,在你的四位数的一般情况下,这根本不可能。

    更具体地说明评论中所说的内容:除以10后的余数给出了输入的最后一个(最低有效)十进制数字。

    假设我得到2的余数。如果输入是四位数,那意味着输入是xyz2 ,其中xyz都是一个数字。 我为xy和/或z填写的任何数字都给出了除法后的余数的正确结果。

    在那之后,我们只留下了扭转添加7部分的问题。 xyz2意味着对于任何给定的xyz2 ,我们需要减去7(如果结果为负,则通过加10来规范化)以获得可能产生该结果的输入。 xyz部分的每个可能值都是可能产生该结果的有效输入。 结果缺少任何数据来指示这些输入中的哪一个用于产生该特定结果。

      以上就是c/c++开发分享反向获得剩余?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/519736.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐