Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình tìm hai chữ số cuối của 2 ^ n trong C ++

Trong bài toán này, chúng ta được cho một số N. Nhiệm vụ của chúng ta là tạo một Chương trình để tìm hai chữ số cuối cùng của 2 ^ n trong C ++.

Mô tả vấn đề

Để tìm hai chữ số cuối cùng. Chúng tôi sẽ chỉ sử dụng sản phẩm của hai chữ số cuối cùng. Và để những thứ khác làm cho các phép tính nhỏ hơn.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào :N =12

Đầu ra :96

Giải thích

2 ^ 12 =4096

Phương pháp tiếp cận giải pháp

Để giải quyết vấn đề, một cách tiếp cận trực tiếp có thể là tìm giá trị của 2 ^ N và sau đó tìm phần dư khi nó chia cho 100.

Ví dụ

#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;
}

Đầu ra

The last two digits of 2^14 is 84

Cách tiếp cận này không hiệu quả, vì đối với các giá trị lớn của N, chương trình sẽ chảy qua.

Một cách tiếp cận tốt hơn là chỉ xem xét 2 chữ số từ các giá trị. Và nhân nó với hai cho mọi lũy thừa.

Đối với mỗi trong trường hợp 2 ^ 14, hai chữ số cuối cùng là 84. Chúng tôi sẽ nhân 84 với hai thay vì số nguyên để tiết kiệm các phép tính. Vì vậy, (84 * 2)% 100 =68.

Ví dụ

#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;
}

Đầu ra

The last two digits of 2^15 is 68