Cutting an integer means to cut a K digits lone 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 × 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
思路:利用sscanf(str,"%d",&x)来切分数字模拟
代码:
#include <iostream>
#include <sstream>
#include <string>
#include <cstdio>
#include <queue>
#include <cstring>
#include <map>
#include <cstdlib>
#include <stack>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define rep(i,a,n) for(int i=a;i<n;i++)
#define mem(a,n) memset(a,n,sizeof(a))
#define DBGS() cout<<"START\n"
#define DBGE() cout<<"END\n"
const int N = 256+5;
const ll INF = 0x3f3f3f3f;
const double eps=1e-4;
int main() {
int n;
scanf("%d",&n);
char str[20];
int all,l,r;
for(int i=0; i<n; i++) {
scanf("%s",str);
sscanf(str,"%d",&all);
int len=strlen(str)/2;
sscanf(str+len,"%d",&r);
str[len]='\0';
sscanf(str,"%d",&l);
if(!l||!r) {
puts("No");
} else {
if(all%(l*r)==0)
puts("Yes");
else
puts("No");
}
}
return 0;
}