1

题目大意:

给定一个数字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,然后继续下一个循环即可。

提交结果:

截屏2020-11-26 下午2.33.31.png

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;
}

乔梓鑫
569 声望17 粉丝

主要分享个人学习经验和心得