# PAT(A) 1132. Cut Integer (20)

### 1132. Cut Integer (20)

Cutting an integer means to cut a K digits long integer Z into two integers of (K/2) digits long integers A and B. For example, after cutting Z = 167334, we have A = 167 and B = 334. It is interesting to see that Z can be devided by the product of A and B, as 167334 / (167 x 334) = 3. Given an integer Z, you are supposed to test if it is such an integer. Input Specification:

Each input file contains one test case. For each case, the first line gives a positive integer N (<= 20). Then N lines follow, each gives an integer Z (10<=Z<=231). It is guaranteed that the number of digits of Z is an even number.

Output Specification:

For each case, print a single line "Yes" if it is such a number, or "No" if not.

Sample Input: 3 167334 2333 12345678 Sample Output: Yes No No

### 代码

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 /* * Problem: 1132. Cut Integer (20) * Author: HQ * Time: 2018-03-13 * State: Done * Memo: 字符串 */ #include "iostream" #include "string" using namespace std; string s; int N,Z, A, B; int main() { cin >> N; for (int i = 0; i < N; i++) { cin >> s; int l = s.size(); Z = A = B = 0; for (int j = 0; j < l / 2; j++) { A = A * 10 + s[j] - '0'; Z = Z * 10 + s[j] - '0'; } for (int j = l / 2; j < l; j++) { B = B * 10 + s[j] - '0'; Z = Z * 10 + s[j] - '0'; } if(A == 0 || B == 0) cout << "No" << endl; else if (Z % A != 0) cout << "No" << endl; else if((Z / A) % B != 0) cout << "No" << endl; else cout << "Yes" << endl; } system("pause"); }