给定非常大的N。任务是找到(1 n + 2 n + 3 n + 4 n )mod 5 。
例子:
Input: N = 4
Output: 4
(1 + 16 + 81 + 256) % 5 = 354 % 5 = 4
Input: N = 7823462937826332873467731
Output: 0
方法: (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