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