题目粗心:
给定一个数字Z,其位数为偶数,在其中间划开,后面的数字为A,前面的数字为B,如果Z能整除A*B,输入Yes,否则输入No。
算法思路:
看到宰割问题,首先想到的是字符串宰割,咱们采纳string s来承受输出的数字,而后将其前半部分宰割并转化为整数为a,后半局部宰割并转化为整数为B,并将s转化为整数z,如果z%(a*b)==0,输入Yes,否则输入No。
留神点:
- 1、a和b,也就是除数有可能为0,此时不能做取余运算,否则会最初2个测试点会呈现浮点谬误,间接特判输入No,而后持续下一个循环即可。
提交后果:
AC代码:
#include<cstdio>#include<string>#include<iostream>using namespace std;int main(){ int N; scanf("%d",&N); for (int i = 0; i < N; ++i) { string s; cin>>s; int z = stoi(s); int a = stoi(s.substr(0,s.size()/2)); int b = stoi(s.substr(s.size()/2)); if(a==0||b==0){ printf("No\n"); continue; } if(z%(a*b)==0){ printf("Yes\n"); } else { printf("No\n"); } } return 0;}