Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรมหาเลขท้าย 2^n ใน C++


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