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

C++에서 2^n의 마지막 두 자리를 찾는 프로그램

<시간/>

이 문제에서는 숫자 N이 주어집니다. 우리의 임무는 C++에서 2^n의 마지막 두 자리를 찾는 프로그램을 만드는 것입니다.

문제 설명

마지막 두 자리를 찾으려면. 마지막 두 자리의 곱만 사용합니다. 그리고 계산을 작게 하기 위해 다른 것들은 남겨두세요.

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

입력 :N =12

출력 :96

설명

2^12 =4096

솔루션 접근 방식

이 문제를 해결하기 위해 직접적인 접근 방식은 2^N의 값을 찾은 다음 100으로 나눈 나머지를 찾을 수 있습니다.

예시

#include <iostream>
using namespace std;
int findLastDigit(int N){
   int powerVal = 1;
      for(int i = 0; i < N; i++){
         powerVal *= 2;
      }
   return powerVal%100;
}
int main() {
   int N = 14;
   cout<<"The last two digits of 2^"<<N<<" is "<<findLastDigit(N);
   return 0;
}

출력

The last two digits of 2^14 is 84

N 프로그램 willoverflow의 큰 값에 대해 이 접근 방식은 효과적이지 않습니다.

더 나은 접근 방식 값에서 2자리만 고려하면 됩니다. 모든 거듭제곱에 대해 2를 곱합니다.

각각에 대해 2^14의 경우 마지막 두 자리는 84입니다. 계산을 저장하기 위해 정수 대신 84에 2를 곱합니다. 따라서(84*2)%100 =68입니다.

예시

#include <iostream>
using namespace std;
int findLastDigit(int N){
   int powerVal = 1;
   for(int i = 0; i < N; i++){
      powerVal = (powerVal * 2)%100;
   }
   return powerVal;
}
int main() {
   int N = 15;
   cout<<"The last two digits of 2^"<<N<<" is "<<findLastDigit(N);
   return 0;
}

출력

The last two digits of 2^15 is 68