#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int n, m;
// 读取矩阵尺寸
if (!(cin >> n >> m)) {
cerr << "输入错误:无法读取矩阵尺寸" << endl;
return 1;
}
// 检查尺寸范围
if (n < 1 || n > 100 || m < 1 || m > 100) {
cerr << "输入错误:矩阵尺寸超出范围" << endl;
return 1;
}
// 动态分配并读取第一幅图像
int** image1 = new int*[n];
for (int i = 0; i < n; ++i) {
image1[i] = new int[m];
for (int j = 0; j < m; ++j) {
if (!(cin >> image1[i][j])) {
cerr << "输入错误:无法读取图像数据" << endl;
return 1;
}
// 检查像素值范围
if (image1[i][j] != 0 && image1[i][j] != 1) {
cerr << "输入错误:像素值必须为0或1" << endl;
return 1;
}
}
}
// 读取并比较第二幅图像
int same_count = 0;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
int pixel2;
if (!(cin >> pixel2)) {
cerr << "输入错误:无法读取第二幅图像数据" << endl;
return 1;
}
if (image1[i][j] == pixel2) {
same_count++;
}
}
}
// 释放内存
for (int i = 0; i < n; ++i) {
delete[] image1[i];
}
delete[] image1;
// 计算相似度
double similarity = (double)same_count / (n * m) * 100.0;
// 输出结果,保留两位小数
cout << fixed << setprecision(2) << similarity << endl;
return 0;
}
/**************************************************************
Problem: 1998
User: fuyijun
Language: C++
Result: Wrong Answer
****************************************************************/