您将得到一个正整数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