逆整数的逆模数

时间:2014-11-26 12:27:01

标签: c# math integer modulo

我正在尝试用C#编写代码,但是我在查找算法时遇到了问题。 目标是编写一个函数,该函数将整数作为参数并返回Integerarray(返回2个整数)。

此函数应找到输入数字的有效模数计算,其结果(提醒)与输入数字相同。

例如我的输入是数字5​​。 现在应该找到一个有效的模数计算,其结果是5。 例如12%7 = 5。 所以函数应该返回12和7。 如何找到与输入数字具有相同结果的模数和分频器? 我无法显示任何代码,因为我不知道如何开始编码。 很酷的是有人可以帮助我。

2 个答案:

答案 0 :(得分:0)

步骤1.选择一个数字,这将是您的第一个输出数字。步骤2从该数字中减去输入,这将是您的其他输出数字

答案 1 :(得分:0)

  1. 认为问题应该是:

    • x%y=z
    • a) x,z知道y未知
    • 而不是
    • b)其中z已知且x,y未知,如OP文本中所述
  2. 无论如何
  3. 展位案例

    • 计算它的最简单但也是最慢的方法是暴力攻击
  4. 示例 a)

    const int max=1024; // some solution constraint ...
    int imod(int x,int z)
     {
     if (z==0) return x; // if no remainder then solution is any multiple of x
     for (int y=z+1;y<max;y++) if (x%y==z) return y;
     return 0; // no solution found
     }
    
    • y可以是任何足够的条件y > z
    • 这就是为什么从z + 1开始

    示例 b)

    void imod(int &x,int &y,int z)
     {
     // this is not brute-force because the solution is trivial from the conditions stated in OP
     x=z;
     y=z+1;
     }
    
    • 不需要评论(所有内容都在您的问题的评论中解释)

    [注释]

    • 代码是用C ++编写的,所以将其修改为您的语言......
    • 如果您需要核实更多数字以找到最初使用的modulo(破解一些代码)
    • 然后记住所有解决方案并为所有数字选择一个共同的
    • 或立即检查所有数字,并且只使用满足所有数字的解决方案
    • 如果你有权访问原始模数,那么你可以将incresing数字传递给它,直到它切断结果值为x>=y,这样你就可以递归地找到O(log(N))中的匹配O(N)...