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

C++에서 N번째 피보나치 수의 마지막 두 자리를 찾는 프로그램

<시간/>

이 문제에서 우리는 숫자 N을 받습니다. 우리의 임무는 C++에서 N번째 피보나치 수의 마지막 두 자리를 찾는 프로그램을 만드는 것입니다.

문제 설명

N번째 피보나치 수의 마지막 두 자리(즉, 두 개의 LSB)를 찾아야 합니다. 문제를 이해하기 위해 예를 들어 보겠습니다.

입력 :N =120

출력 :81

솔루션 접근 방식

간단한 솔루션은 직접 피보나치 공식을 사용하여 N번째 항을 찾는 것입니다. 그러나 이 방법은 N이 큰 수일 때 실현 가능하지 않습니다. 따라서 이를 극복하기 위해 마지막 두 자리 숫자가 300항 후에 반복되는 피보나치 수열의 속성을 사용할 것입니다. 즉. 75번째 단어의 마지막 두 자리는 975번째 단어의 숫자와 같습니다.

즉, 300까지 작업하면 가능한 모든 조합이 제공되고 사용할 용어를 찾기 위해 300으로 숫자의 모드를 찾을 수 있습니다.

예시

#include <iostream>
using namespace std;
long int fibo(int N){
   long int a=0,b=1,c;
   for(int i=2; i<= N;i++) {
      c=a+b; a=b; b=c;
   }
   return c;
}
int findLastTwoDigitNterm(int N) {
   N = N % 300;
   return ( fibo(N)%100);
}
int main() {
   int N = 683;
   cout<<"The last two digits of "<<N<<"th Fibonacci term are "<<findLastTwoDigitNterm(N);
   return 0;
}

출력

The last two digits of 683th Fibonacci term are 97