📜  如何计算大数的mod?

📅  最后修改于: 2021-05-04 09:07:10             🧑  作者: Mango

给定一个大数字“ num”表示为字符串和一个整数x,请找到“ num%x”或“ num mod x”的值。预期输出为整数。

例子 :

Input:  num = "12316767678678",  a = 10
Output: num (mod a) ≡ 8

这个想法是一一处理所有数字并使用xy(mod a)≡((x(mod a)* y)(mod a))的属性。下面是实现。

感谢utkarsh111建议以下解决方案。

C++
// C++ program to compute mod of a big number represented
// as string
#include
using namespace std;
 
// Function to compute num (mod a)
int mod(string num, int a)
{
    // Initialize result
    int res = 0;
 
    // One by one process all digits of 'num'
    for (int i = 0; i < num.length(); i++)
         res = (res*10 + (int)num[i] - '0') %a;
 
    return res;
}
 
// Driver program
int main()
{
    string num = "12316767678678";
    cout << mod(num, 10);
    return 0;
}


Java
// Java program to compute mod of a big
// number represented as string
import java.io.*;
 
class GFG {
     
    // Function to compute num (mod a)
    static int mod(String num, int a)
    {
         
        // Initialize result
        int res = 0;
 
        // One by one process all digits of 'num'
        for (int i = 0; i < num.length(); i++)
            res = (res * 10 + (int)num.charAt(i)
                                     - '0') % a;
 
        return res;
    }
 
    // Driver program
    public static void main(String[] args)
    {
         
        String num = "12316767678678";
         
        System.out.println(mod(num, 10));
    }
}
 
// This code is contributed by vt_m.


Python3
# program to compute mod of a big number
# represented as string
 
# Function to compute num (mod a)
def mod(num, a):
     
    # Initialize result
    res = 0
 
    # One by one process all digits
    # of 'num'
    for i in range(0, len(num)):
        res = (res * 10 + int(num[i])) % a;
 
    return res
 
# Driver program
num = "12316767678678";
print(mod(num, 10))
 
# This code is contributed by Sam007


C#
// C# program to compute mod of a big
// number represented as string
using System;
 
public class GFG
{
     
    // Function to compute num (mod a)
    static int mod(String num, int a)
    {
         
        // Initialize result
        int res = 0;
 
        // One by one process all
        // digits of 'num'
        for (int i = 0; i < num.Length; i++)
            res = (res * 10 + (int)num[i]-
                   '0') % a;
 
        return res;
    }
 
    // Driver code
    public static void Main()
    {
        String num = "12316767678678";
         
        Console.WriteLine(mod(num, 10));
    }
}
 
// This code is contributed by Sam007


PHP


Javascript


输出 :

8