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

นับจำนวนเอกนารีในช่วงใน C++


ให้ตัวเลขสองตัวเริ่มต้นและสิ้นสุดแทนช่วง เป้าหมายคือการหาจำนวน Unary ที่มีอยู่ระหว่าง [ start, end ].

เราสามารถตรวจสอบว่าตัวเลขนั้นเป็น Unary หรือไม่ โดยทำตามขั้นตอนต่อไปนี้:ถ้าเราเอาตัวเลข 13 แล้ว 12 + 32 =10 แล้ว 12 + 02 =1 ดังนั้นผลรวมสูงสุดด้วยวิธีนี้คือ 1 ดังนั้น 13 จึงไม่เท่ากัน

ตัวอย่าง

อินพุต

start=1 end=20

ผลลัพธ์

Count of Unary Numbers in a Range are: 5

คำอธิบาย

The numbers are :
1, 7, 10, 12, and 13

อินพุต

start=50 end=100

ผลลัพธ์

Count of Unary Numbers in a Range are: 7

คำอธิบาย

The numbers are −
59, 63, 67, 74, 75, 78, and 89

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

ระหว่าง 1 ถึง 9 ตัวเลข 1 ถึง 7 เป็นเอกพจน์ สำหรับตัวเลขอื่นๆ เราจะใช้ผลรวมของกำลังสองของหลักจนกว่าจะได้ 1 ทำขั้นตอนนี้ต่อสำหรับตัวเลขทั้งหมดในช่วง จำนวนที่เพิ่มขึ้นสำหรับจำนวนเอกนารีทั้งหมดที่พบในลักษณะนี้

  • เริ่มต้นจำนวนเต็มสองจำนวน สิ้นสุดเป็นอินพุต

  • ฟังก์ชัน check_unary(หมายเลข int) คืนค่า จริง หากค่าที่ส่งเป็น unary คืนค่าเท็จ

  • ฟังก์ชัน Unary_range(int start, int end) รับตัวแปรช่วงและคืนค่าการนับจำนวน unary ที่อยู่ในช่วง

  • ให้นับเริ่มต้นเป็น 0 ใช้ for loop ข้ามจาก i=start ไปจนสุด หาก check_unary(i) คืนค่าเป็น true ให้นับการเพิ่มขึ้น

  • ภายใน check_unary(int number) ให้นับตัวแปรชั่วคราว

  • ถ้าหมายเลข N คือ 1, 7 ให้คืนค่า จริง ส่งคืนค่าเท็จสำหรับตัวเลขอื่นๆ ทั้งหมดที่น้อยกว่า 10 ( number/10 ==0 )

  • จากนั้นในขณะที่ลูปคำนวณผลรวมของกำลังสองของหลัก

  • เรียก check_unary(หมายเลข int) อีกครั้งสำหรับผลรวมต่อเนื่องดังกล่าวจนกว่าผลรวมจะกลายเป็น 1

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

ตัวอย่าง

#include <iostream>
using namespace std;
bool check_unary(int number){
   int total;
   if (number == 1 ){
      return true;
   }
   else if(number == 7){
      return true;
   }
   else if (number / 10 == 0){
      return false;
   }
   while (number!= 0){
      int temp = number % 10;
      total = total + temp * temp;
      number = number / 10;
   }
   check_unary(total);
}
int Unary_range(int start, int end){
   int count = 0;
   for (int i = start; i <= end; i++){
      if (check_unary(i) == 1){
         count++;
      }
   }
   return count;
}
int main(){
   int start = 200, end = 400;
   cout<<"Count of Unary Numbers in a Range are: "<<Unary_range(start, end);
   return 0;
}

ผลลัพธ์

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

Count of Unary Numbers in a Range are: 31