算法题:如何计算大数的mod?

本文概述

给定一个大数字”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<iostream>
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

<?php
// PHP program to compute mod 
// of a big number represented 
// as string
  
// Function to compute num (mod a)
function mod( $num , $a )
{
     // Initialize result
     $res = 0;
  
     // One by one process 
     // all digits of 'num'
     for ( $i = 0; $i < $r = strlen ( $num ); $i ++)
         $res = ( $res * 10 + 
                 $num [ $i ] - '0' ) % $a ;
  
     return $res ;
}
  
// Driver Code
$num = "12316767678678" ;
echo mod( $num , 10);
  
// This code is contributed by ajit
?>

输出:

8

如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请发表评论。

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?