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

开启你的职业生涯

完成课程获得认证

开始学习
广告