C++程式:求2n的最後兩位數字


在這個問題中,我們給定一個數字N。我們的任務是編寫一個C++程式來求2n的最後兩位數字。

問題描述

為了找到最後兩位數字,我們只使用最後兩位數字的乘積。忽略其他位數以簡化計算。

讓我們舉個例子來理解這個問題:

輸入: N = 12

輸出: 96

解釋

2^12 = 4096

解決方案

解決這個問題的一種直接方法是計算2N的值,然後求其除以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值,程式會溢位。

一個更好的方法是隻考慮數值的最後兩位數。每次冪次運算都乘以2。

例如,對於214,最後兩位數字是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

更新於: 2020年10月9日

瀏覽量:519

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.