📜  查找(1 ^ n + 2 ^ n + 3 ^ n + 4 ^ n)mod 5的值

📅  最后修改于: 2021-05-04 21:30:53             🧑  作者: Mango

您将得到一个正整数n。您必须找到(1 n +2 n + 3 n + 4 n )mod 5的值。
注意: n的值可能非常大,为10 15
例子:

Input : n = 4
Output : 4
Explanation : (14 + 24 + 34 + 44)mod 5 = (1+16+81+256)mod 5 = 354 mod 5 = 4

Input : n = 2
Output : 0
Explanation : (12 + 22 + 32 + 42)mod 5 = (1+4+9+16)mod 5 = 30 mod 5 = 0

基本方法:如果您将使用一种非常基本的方法来解决此问题,即找到(1 n +2 n + 3 n + 4 n )的值,然后找到其5的模值,您肯定会得到答案,但对于较大的n的值,我们必须给出错误的答案,因为您将无法正确存储(1 n +2 n + 3 n + 4 n )的值。
更好和适当的方法:在进行解决方案之前,让我们先了解一下2、3和4的幂的周期性特征。

  • f(n)= 2 n对于n = 4而言是周期性的最后一位数字。即2 n的最后一位总是对n的下一个第4个值重复。 (例如:2、4、8、16、32、64…)
  • f(n)= 3 n对于n = 4,周期为最后一位。即3 n的最后一位总是重复n的下一个第4个值(例如:3、9、27、81、243、729…)
  • f(n)= 4 n对于n = 2,是最后一位数字的周期。即4 n的最后一位总是对n的下一个第二个值重复(例如:4、16、64、256 ..)
  • 1 n将始终独立于n始终为1。

因此,如果我们仔细查看f(n)=(1 n +2 n + 3 n + 4 n )的周期性,我们将得出其周期性也是4,并且其最后一位为:

  • 对于n = 1,f(n)= 10
  • 对于n = 2,f(n)= 30
  • 对于n = 3,f(n)= 100
  • 对于n = 4,f(n)= 354
  • 对于n = 5,f(n)= 1300

观察以上周期性,我们可以看到,如果(n%4 == 0)f(n)%5的结果将是4,否则结果=0。因此,与其计算f(n)的实际值,然后获得它的值与mod 5可以很容易地得到结果,只需检查n即可。

C++
// Program to find value of f(n)%5
#include 
using namespace std;
 
// function for obtaining remainder
int fnMod(int n)
{
    // calculate res based on value of n
    return (n % 4) ? 0 : 4;
}
 
// driver program
int main()
{
    int n = 43;
    cout << fnMod(n) << endl;
    n = 44;
    cout << fnMod(n);
    return 0;
}


Java
// Program to find value of f(n)% 5
 
class GFG
{
    // function for obtaining remainder
    static int fnMod(int n)
    {
        // calculate res based on value of n
        return (n % 4 != 0) ? 0 : 4;
    }
     
    // Driver code
    public static void main (String[] args)
    {
        int n = 43;
        System.out.println(fnMod(n));
        n = 44;
        System.out.print(fnMod(n));
    }
}
 
// This code is contributed by Anant Agarwal.


Python
# program to find f(n) mod 5
def fnMod (n):
    res = 4 if (n % 4 == 0) else 0
    return res
 
# driver section
n = 43
print (fnMod(n))
n = 44
print (fnMod(n))


C#
// C# Program to find value of f(n) % 5
using System;
 
class GFG {
     
    // function for obtaining remainder
    static int fnMod(int n)
    {
        // calculate res based on value of n
        return (n % 4 != 0) ? 0 : 4;
    }
     
    // Driver code
    public static void Main ()
    {
        int n = 43;
        Console.WriteLine(fnMod(n));
        n = 44;
        Console.Write(fnMod(n));
    }
}
 
// This code is contributed by nitin mittal.


PHP


Javascript


输出:
0
4