Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 주어진 n에 대한 (n^1 + n^2 + n^3 + n^4) mod 5의 값 찾기

<시간/>

이 문제에서는 값 n이 주어집니다. 우리의 임무는 주어진 n에 대해 (n^1 + n^2 + n^3 + n^4) mod 5의 값을 찾는 것입니다. .

문제를 이해하기 위해 예를 들어 보겠습니다.

Input : n= 5
Output : 0

설명 -

(51 + 52 + 53 + 54) mod 5
= (5 + 25 + 125 + 625) mod 5
= (780) mode 5 = 0

해결 방법

문제에 대한 간단한 해결책은 주어진 N 값에 대한 방정식의 값을 직접 찾은 다음 5로 모듈러스를 계산하는 것입니다.

솔루션 작동을 설명하는 프로그램

#include <iostream>
using namespace std;
int findMod5Val(int n){
   int val = (n + (n*n) + (n*n*n) + (n*n*n*n));
   return val%5;
}
int main(){
   int n = 12;
   cout<<"For N = "<<n<<", the value of (n^1 + n^2 + n^3 + n^4)\%5 is "<<findMod5Val(n);
   return 0;
}

출력

For N = 12, the value of (n^1 + n^2 + n^3 + n^4)%5 is 0

문제에 대한 또 다른 해결책은 함수의 수학적 공식화와 일반화를 사용하는 것입니다.

$\mathrm{f(n)\:=\:(n\:+\:n^2\:+\:n^3\:+\:n^4)}$

$\mathrm{f(n)\:=\:n^*(1\:+\:n\:+\:n^2\:+\:n^3)}$

$\mathrm{f(n)\:=\:n^*(1^*(1+n)+n^{2*}(1+n))}$

$\mathrm{f(n)\:=\:n^*((1+n^2)^*(1+n))}$

$\mathrm{f(n)\:=\:n^*(n+1)^*(n^2+1)}$

이 방정식에 대해 f(n) % 5의 값은 n의 값을 기반으로 0 또는 4가 될 수 있음을 도출할 수 있습니다.

if(n%5 == 1),
   f(n)%5 = 4
Else,
   f(n)%5 = 0

솔루션 작동을 설명하는 프로그램

#include <iostream>
using namespace std;
int findMod5Val(int n){
   if(n % 4 == 1)
      return 4;
   return 0;
}
int main(){
   int n = 65;
   cout<<"For N = "<<n<<", the value of (n^1 + n^2 + n^3 + n^4)\%5 is "<<findMod5Val(n);
   return 0;
}

출력

For N = 65, the value of (n^1 + n^2 + n^3 + n^4)%5 is 4