ให้ตัวเลขสองตัวเริ่มต้นและสิ้นสุดแทนช่วง เป้าหมายคือการหาจำนวน 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