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

นับเลข Unary ในช่วงด้วย C++

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

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

ตัวอย่าง

Input

start=1 end=20

Output

Count of Unary Numbers in a Range are: 5

Explanation

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

Input

start=50 end=100

Output

Count of Unary Numbers in a Range are: 7

Explanation

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

วิธีการที่ใช้ในโปรแกรม

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

  • รับจำนวนเต็ม start, end เป็นอินพุต
  • ฟังก์ชัน check_unary(int number) คืนค่า true ถ้าเป็น Unary มิฉะนั้น false
  • ฟังก์ชัน Unary_range(int start, int end) คืนค่าจำนวนเลข Unary ในช่วง
  • กำหนดจำนวนนับเริ่มต้นเป็น 0 ลูปจาก i=start ถึง end ถ้า check_unary(i) เป็น true เพิ่ม count
  • ใน check_unary(int number) ตัวแปรชั่วคราว total
  • ถ้า N เป็น 1 หรือ 7 คืนค่า true คืนค่า false สำหรับเลขอื่นน้อยกว่า 10 (number/10 == 0)
  • ใน while loop คำนวณผลรวมกำลังสองของหลักต่างๆ
  • เรียก check_unary(total) ซ้ำจนผลรวมกลายเป็น 1
  • คืนค่า count เป็นผลลัพธ์

ตัวอย่างโค้ด

#include <iostream>
using namespace std;

bool check_unary(int number){
    int total = 0;
    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;
    }
    return 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;
}

Output

หากรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้:

Count of Unary Numbers in a Range are: 31