ในปัญหานี้ เราได้รับตัวเลข 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