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