This question quzzled me a lot.Because in prevois code ,I wrote the function to count 1/2 digits’ quantity of a number as following,testcase 1 and 2 are wrong answer:
int digit(int z)
{
int cnt = 0;
int d=1;
while (z/d>0)
{
d=d*10;
++cnt;
}
return cnt / 2;
}
If you know why,please tell me and thanks a lot!!❤
Here is the ac code:
#include <iostream>
#include <stdio.h>
#include<stdlib.h>
#include <math.h>
#include <algorithm>
#include <vector>
#include <map>
#include <string>
#include<stack>
#include <unordered_map>
#include <queue>
#include <complex>
using namespace std;
int digit(int z)
{
int cnt = 0;
while (z)
{
z = z / 10;
++cnt;
}
return cnt / 2;
}
int main() {
int n, d, pre, post;
int z;
cin >> n;
while (n--) {
cin >> z;
int len = digit(z);
pre = z / int(pow(10, len));
post = z % int(pow(10, len));
if (post == 0) cout << "No" << endl;
else if (z % (pre*post) == 0) cout << "Yes" << endl;
else cout << "No" << endl;
}
return 0;
}