📜  查找(1 ^ n + 2 ^ n + 3 ^ n + 4 ^ n)mod 5 |套装2

📅  最后修改于: 2021-05-07 01:47:23             🧑  作者: Mango

给定非常大的N。任务是找到(1 n + 2 n + 3 n + 4 n )mod 5
例子:

方法: (1 n + 2 n + 3 n + 4 n )mod 5 =(1 n mod?(5) + 2 n mod?(5) + 3 n mod?(5) + 4 n mod?(5) )mod 5。
该公式是正确的,因为5是质数,并且与1,2,3,4互质。
知道?(n)和大数的模
α(5)= 4 ,因此(1 n + 2 n + 3 n + 4 n )mod 5 =(1 n mod 4 + 2 n mod 4 + 3 n mod 4 + 4 n mod 4 )mod 5
下面是上述方法的实现:

C++
// C++ implementation of the approach
#include 
using namespace std;
 
// Function to return A mod B
int A_mod_B(string N, int a)
{
    // length of the string
    int len = N.size();
 
    // to store requried answer
    int ans = 0;
    for (int i = 0; i < len; i++)
        ans = (ans * 10 + (int)N[i] - '0') % a;
 
    return ans % a;
}
 
// Function to return (1^n + 2^n + 3^n + 4^n) % 5
int findMod(string N)
{
    // ?(5) = 4
    int mod = A_mod_B(N, 4);
 
    int ans = (1 + pow(2, mod) + pow(3, mod)
               + pow(4, mod));
 
    return (ans % 5);
}
 
// Driver code
int main()
{
    string N = "4";
    cout << findMod(N);
 
    return 0;
}


Java
// Java implementation of the approach
class GFG
{
     
// Function to return A mod B
static int A_mod_B(String N, int a)
{
    // length of the string
    int len = N.length();
 
    // to store requried answer
    int ans = 0;
    for (int i = 0; i < len; i++)
        ans = (ans * 10 + (int)N.charAt(i) - '0') % a;
 
    return ans % a;
}
 
// Function to return (1^n + 2^n + 3^n + 4^n) % 5
static int findMod(String N)
{
    // ?(5) = 4
    int mod = A_mod_B(N, 4);
 
    int ans = (1 + (int)Math.pow(2, mod) +
                (int)Math.pow(3, mod) +
                (int)Math.pow(4, mod));
 
    return (ans % 5);
}
 
// Driver code
public static void main(String args[])
{
    String N = "4";
    System.out.println(findMod(N));
}
}
 
// This code is contributed by Arnab Kundu


Python3
# Python3 implementation of the approach
 
# Function to return A mod B
def A_mod_B(N, a):
     
    # length of the string
    Len = len(N)
 
    # to store requried answer
    ans = 0
    for i in range(Len):
        ans = (ans * 10 + int(N[i])) % a
 
    return ans % a
 
# Function to return (1^n + 2^n + 3^n + 4^n) % 5
def findMod(N):
 
    # ?(5) = 4
    mod = A_mod_B(N, 4)
 
    ans = (1 + pow(2, mod) +
               pow(3, mod) + pow(4, mod))
 
    return ans % 5
 
# Driver code
N = "4"
print(findMod(N))
 
# This code is contributed by mohit kumar


C#
// C# implementation of the approach
using System;
 
class GFG
{
     
// Function to return A mod B
static int A_mod_B(string N, int a)
{
    // length of the string
    int len = N.Length;
 
    // to store requried answer
    int ans = 0;
    for (int i = 0; i < len; i++)
        ans = (ans * 10 + (int)N[i] - '0') % a;
 
    return ans % a;
}
 
// Function to return (1^n + 2^n + 3^n + 4^n) % 5
static int findMod(string N)
{
    // ?(5) = 4
    int mod = A_mod_B(N, 4);
 
    int ans = (1 + (int)Math.Pow(2, mod) +
                (int)Math.Pow(3, mod) +
                (int)Math.Pow(4, mod));
 
    return (ans % 5);
}
 
// Driver code
public static void Main()
{
    string N = "4";
    Console.WriteLine(findMod(N));
}
}
 
// This code is contributed by Code_Mech.


PHP


Javascript


输出:
4