本题较简单,唯一需要注意的是,后两个得分点,当输入整数为10时,A=1,B=0,A*B=0,此时除数为A*B=0,会造成浮点错误,此种情况需要特判。
代码非常粗糙,由于电脑没装vs,直接在答题网页上写的,有很大的优化空间.......
#include<stdio.h>
long long n, num=1,a,b;
int len(long long num){
int i=0;
while(num){
i++;num/=10;
}
return i;
}
int get(int b,long long num){
int i, weight=1, sum=0;
for(i=0;i<b;i++){
sum+=weight*(num%10);
num/=10;
weight*=10;
}
return sum;
}
int main(){
scanf("%d",&num);
while(num--){
scanf("%lld",&n);
b=get(len(n)/2,n);
int temp=n,k=len(n)/2;
while(k--){
temp/=10;
}
a=get(len(n)/2,temp);
if(a*b==0){printf("No\n");continue;}
if(n%a!=0)printf("No\n");
else if((n/a)%b==0)printf("Yes\n");
else printf("No\n");
}
return 0;
}
PAT-A1132
最新推荐文章于 2021-02-01 20:28:18 发布