1132 Cut Integer

本以为a%(b*c)==0的话,相当于a%b==0&&a%c==0,就直接将两个数分开来判断(因为担心两个数相乘后的结果会超过int的范围,但实际上不会,在这道题中,每个数顶多为10^4,相乘也不过10^8,能直接进行相乘)。但实际上不行,因为就算a除b和除c除的尽,a除以(b*c)也不一定除的尽,在这道题,例如22。

原本写的代码:

#include<iostream>
#include<string>
using namespace std;
int main(){
    int n;
    cin>>n;
    while(n--){
        string num;
        cin>>num;
        int le=num.size();
        string one=num.substr(0,le/2),two=num.substr(le/2,le/2);
        bool flag=true;
        if(stoi(one)==0||stoi(two)==0){
            cout<<"No"<<endl;
            continue;
        }

        if(stoi(num)%stoi(one)!=0)flag=false;
        if(stoi(num)%stoi(two)!=0)flag=false;
        if(flag)cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }
    return 0;
}

ac代码:

#include<iostream>
#include<string>
using namespace std;
int main(){
    int n;
    cin>>n;
    while(n--){
        string num;
        cin>>num;
        int le=num.size();
        string one=num.substr(0,le/2),two=num.substr(le/2,le/2);
        bool flag=true;
        if(stoi(one)==0||stoi(two)==0){
            cout<<"No"<<endl;
            continue;
        }
        if(stoi(num)%(stoi(one)*stoi(two))!=0)flag=false;
        if(flag)cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值