Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm số bậc một trong một phạm vi trong C ++

Cho trước hai số bắt đầu và kết thúc đại diện cho một phạm vi. Mục đích là để tìm số lượng Số lẻ tồn tại giữa [bắt đầu, kết thúc].

Chúng ta có thể kiểm tra xem số đó có phải là Số bậc một hay không bằng các bước sau:Nếu chúng ta lấy số 13 thì 12 + 32 =10, thì 12 + 02 =1 Vì vậy, tổng cuối cùng theo cách này là 1 nên 13 là số một.

Ví dụ

Đầu vào

start=1 end=20

Đầu ra

Count of Unary Numbers in a Range are: 5

Giải thích

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

Đầu vào

start=50 end=100

Đầu ra

Count of Unary Numbers in a Range are: 7

Giải thích

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

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau -

Từ 1 đến 9 số 1 và 7 là số một. Đối với các số khác, chúng tôi sẽ sử dụng tổng bình phương các chữ số cho đến khi nó cho 1. Tiếp tục quá trình này cho tất cả các số trong phạm vi. Số lượng tăng dần cho tất cả các số đơn vị được tìm thấy theo cách này.

  • Lấy hai số nguyên bắt đầu, kết thúc làm đầu vào.

  • Hàm check_unary (int number) trả về true nếu giá trị được truyền là một bậc, còn lại trả về false.

  • Hàm Unary_range (int start, int end) nhận các biến phạm vi và trả về tổng số các số đơn nguyên nằm trong phạm vi.

  • Lấy số đếm ban đầu là 0. Sử dụng vòng lặp for, duyệt từ i =đầu đến cuối. Nếu check_unary (i) trả về true, thì số gia tăng.

  • Bên trong check_unary (số int), lấy số lượng biến tạm thời.

  • Nếu số N là 1, 7, trả về true. Trả về false cho tất cả các số khác nhỏ hơn 10. (number / 10 ==0).

  • Sau đó, trong vòng lặp while tính tổng bình phương các chữ số.

  • Một lần nữa gọi check_unary (số int) cho các tổng liên tục như vậy cho đến khi tổng trở thành 1.

  • Kết quả là số lượt trả lại.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Count of Unary Numbers in a Range are: 31