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

นับตัวเลขด้วยหลักแรกและหลักสุดท้ายเหมือนกันใน C++


เราได้รับช่วงเวลา [ก่อน, ท้าย] เป้าหมายคือการหาจำนวนตัวเลขที่มีหลักแรกและหลักสุดท้ายเหมือนกันภายในช่วงเวลานี้ ตัวอย่างเช่น 232 มีหลักแรกและหลักสุดท้ายเหมือนกันกับ 2

เราจะทำสิ่งนี้โดยข้ามจาก i=first ไปยัง i=last สำหรับแต่ละตัวเลข ฉันจะเปรียบเทียบตัวเลขตัวแรกกับหลักสุดท้าย หากมีจำนวนเพิ่มขึ้นเท่ากัน

มาทำความเข้าใจกับตัวอย่างกัน

ป้อนข้อมูล − first=8 สุดท้าย=40

ผลผลิต − การนับตัวเลขที่มีหลักแรกและหลักสุดท้ายเหมือนกัน − 5

คำอธิบาย − ตัวเลขระหว่าง 8 ถึง 40 ที่มีหลักแรกและหลักสุดท้ายเหมือนกัน -

8, 9, 11, 22, 33

ป้อนข้อมูล − แรก=100 สุดท้าย=200

ผลผลิต − การนับตัวเลขที่มีหลักแรกและหลักสุดท้ายเหมือนกัน:5

คำอธิบาย − ตัวเลขระหว่าง 100 ถึง 200 ที่มีหลักแรกและหลักสุดท้ายเหมือนกัน -

101, 111, 121, 131, 141, 151, 161, 171, 181, 191.

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • เราใช้จำนวนเต็มสองตัวก่อนและตัวสุดท้ายเพื่อกำหนดช่วง [first,last]

  • ฟังก์ชัน getFirstDigit(int num) รับค่าตัวเลขและคืนค่าหลักแรก

  • ในขณะที่ num>=10 ให้หาร num ด้วย 10 ในตอนท้าย num จะมีหลักแรก ส่งคืนค่านี้

  • ฟังก์ชัน getCount(int fst,int lst) รับตัวแปรช่วงและส่งกลับจำนวนตัวเลขที่มีตัวเลขหลักแรกและหลักสุดท้ายเหมือนกัน

  • นับเริ่มต้นเป็น 0

  • ใช้ for loop start จาก i=fst ถึง i=lst สำหรับแต่ละ i คำนวณเป็นตัวเลขหลักแรกโดยเรียก getFirstDigit(i) และเก็บไว้ใน fdigit (fdigit=getFirstDigit(i)).

  • คำนวณหลักสุดท้ายเป็น ldigit=i%10.

  • ถ้า ldigit==fdigit แสดงว่าเหมือนกัน จำนวนที่เพิ่มขึ้น

  • ผลตอบแทนนับเป็นผลลัพธ์

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
//to find starting digit
int getFirstDigit(int num){
   while (num >= 10)
      { num = num/ 10; }
   return num;
}
int getCount(int fst,int lst){
   int count=0;
   for(int i=fst;i<=lst;i++){
      int fdigit=getFirstDigit(i);
      int ldigit=i%10; //to get last digit
      if(fdigit==ldigit) //if both are equal increment count
         { ++count; }
   }
   return count;
}
int main(){
   int first = 10, last = 23;
   cout<<"Numbers with same first and last digits:"<<getCount(first, last);
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Numbers with same first and last digits:2