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

Tối đa hóa số lượng các số Tự động hóa liên tục trong C ++


Nhiệm vụ được giao là tối đa hóa số phần tử Tự động hóa liên tục trong một mảng nhất định với N phần tử.

Số tự động là số có hình vuông kết thúc bằng các chữ số giống như chính số đó. Ví dụ 5 là một số tự động là 5 * 5 =25 và 25 kết thúc bằng 5.

Bây giờ chúng ta hãy hiểu những gì chúng ta phải làm bằng cách sử dụng một ví dụ -

Đầu vào - arr [] ={5,3,625,6,8,1}

Đầu ra - 2

Giải thích - Các số tự động hóa có trong mảng trên là 5, 625, 6 và 1 nhưng các số tự động hóa liên tục tối đa là {625,6} khiến đầu ra =2.

Đầu vào - arr [] ={33, 25, 1, 76, 4}

Đầu ra - 3

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

  • Trong hàm main (), hãy tạo một biến ‘n’ kiểu int và lưu trữ trong đó, kích thước của mảng đã cho.

  • Trong hàm MaxAutomorphic khởi tạo CurrentMax =0 và Maximum =0 cả hai kiểu int để lưu trữ giá trị lớn nhất hiện tại và giá trị lớn nhất cho đến nay tương ứng.

  • Lặp lại từ i =0 cho đến i

  • Trong hàm IsAutomophic (), hãy khởi tạo một biến sqr =n * n kiểu int để lưu trữ bình phương của số n

  • Lặp lại bằng cách sử dụng vòng lặp while với điều kiện n> 0 và so sánh các chữ số cuối cùng của n và sqr để kiểm tra xem số đó có phải là số tự động hay không.

  • Quay lại hàm MaxAutomorphic (), nếu số không phải là số tự động thì hãy đặt CurrentMax =0

  • Ngược lại, nếu số được tìm thấy là tự động hóa thì hãy thêm 1 vào CurrentMax và lưu trữ số lớn hơn trong CurrentMax và Maximum vào biến Maximum.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
//Function to check if number is automorphic
bool IsAutomorphic(int n){
   //Storing the square of n
   int sqr = n * n;
   //Comparing the digits
   while (n > 0){
      /*Return false if any digit of n doesn't
      match with its square's last digits*/
      if (n % 10 != sqr % 10)
         return false;
      n /= 10;
      sqr /= 10;
   }
   return true;
}
int MaxAutomorphic(int arr[], int size){
   int CurrentMax = 0, Maximum = 0;
   for (int i = 0; i < size; i++){
      //Checking if the element is non-automorphic
      if (IsAutomorphic(arr[i]) == false)
         CurrentMax = 0;
         //Updating CurrentMax and Maximum if number is automorphic
      else{
         CurrentMax++;
         Maximum = max(CurrentMax, Maximum);
      }
   }
   return Maximum;
}
//Main function
int main(){
   int arr[] = { 33, 25, 1, 76, 4 };
   int size = sizeof(arr) / sizeof(arr[0]);
   cout << MaxAutomorphic(arr, size);
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau -

3