本以为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;
}