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