题目描述
剪切整数意味着将K位的孤立整数Z剪切为两个(K / 2)位长整数A和B的整数。例如,剪切Z = 167334之后,我们得到A = 167和B =334。这很有趣看到Z可以由A和B的乘积来表示为167334 /(167 × 334)=3。给定整数Z,您应该测试它是否为整数。
思路
以字符串的形式输入数字,前K/2位为A,后K/2位为B,整个数字为k。当k%(A * B) = =0时输出yes
注意: 输出时需要判断A*B是否为0,否则%0会出现浮点错误
#include <bits/stdc++.h>
using namespace std;
long long A,B;
long long fen(string s)
{
long long x=0;
int len=(int)s.length();
for(int i=0;i<len/2;i++)
{
A=A*10+s[i]-'0';
x=x*10+s[i]-'0';
}
for(int i=len/2;i<len;i++)
{
B=B*10+s[i]-'0';
x=x*10+s[i]-'0';
}
//cout<<A<<" "<<B<<" "<<x;
return x;
}
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("1.txt", "r", stdin);
#endif
int n;
cin>>n;
while(n--)
{
A=0,B=0;
string s;
cin>>s;
long long k=fen(s);
long long mod=A*B;
if(mod!=0&&k%mod==0)
cout<<"Yes";
else cout<<"No";
if(n!=0)
cout<<endl;
}
return 0;
}