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
广告