题目大意:将长度为偶数的数字,从中间分成两个数,判断原数字能否被这两个数的积整除。
直接使用字符串转数字的函数即可,为方便起见使用 unsigned long long 型,对应的函数是 stoull。另外要注意做除法之前判断除数不为零,否则测试点2和3会浮点错误。
AC代码:
#include <iostream>
#include <cstdio>
using namespace std;
typedef unsigned long long ull;
int main()
{
int N;
scanf("%d", &N);
for (int i = 0; i < N; ++i)
{
string str;
cin >> str;
ull num = stoull(str);
ull a = stoull(str.substr(0, str.size() / 2));
ull b = stoull(str.substr(str.size() / 2, str.size() / 2));
if(a != 0 && b != 0 && num % (a * b) == 0) printf("Yes\n");
else printf("No\n");
}
return 0;
}