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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP