ในปัญหานี้ เราได้รับตัวเลข N หน้าที่ของเราคือสร้างโปรแกรมเพื่อค้นหาตัวเลขสองหลักสุดท้ายของ 2^n ใน C++
คำอธิบายปัญหา
เพื่อหาเลขท้ายสองตัว เราจะใช้เฉพาะผลคูณของสองหลักสุดท้าย และปล่อยให้เรื่องอื่นๆ มาคำนวณให้เล็กลง
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล :N =12
ผลผลิต :96
คำอธิบาย
2^12 =4096
แนวทางการแก้ปัญหา
ในการแก้ปัญหา วิธีการโดยตรงอาจเป็นการหาค่า 2^N แล้วหาเศษที่เหลือเมื่อหารด้วย 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 หลักจากค่า และคูณด้วยสองสำหรับทุกยกกำลัง
สำหรับแต่ละกรณีของ 2^14 ตัวเลขสองหลักสุดท้ายคือ 84 เราจะคูณ 84 ด้วยสองแทนที่จะเป็นจำนวนเต็มซึ่งจะบันทึกการคำนวณ ดังนั้น (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