代码如下:
错误原因: a % b其中b不能为0
#include<iostream>
#include<cmath>
using namespace std;
int ans(int num) {
return num == 0 ? 0 : 1 + ans(num / 10);
}
int main() {
int n, z, k, a, b, temp;
cin >> n;
for(int i = 1; i <= n; i++) {
cin >> z;
k = ans(z);
temp = (int)(pow(10, k / 2));
a = z % temp;
b = z / temp;
if(z % (a * b) == 0 && a * b) cout << "Yes" << endl;
else cout << "No" << endl;
}
return 0;
}
AC代码
#include<iostream>
#include<cmath>
using namespace std;
int ans(int num) {
return num == 0 ? 0 : 1 + ans(num / 10);
}
int main() {
int n, z, k, a, b, temp;
cin >> n;
for(int i = 1; i <= n; i++) {
cin >> z;
k = ans(z);
temp = (int)(pow(10, k / 2));
a = z % temp;
b = z / temp;
if(a * b && z % (a * b) == 0) cout << "Yes" << endl; // 只修改此处即可
else cout << "No" << endl;
}
return 0;
}