模拟:
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
int main(){
long long n;
while(cin>>n){
long long a=n*n;
int tag=1;
while(n){
if(a%10!=n%10){
tag=0;
break;
}
a/=10;
n/=10;
}
if(tag)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}
一刷:
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int judge(long long n){
long long pow=n*n;
int p[100],a[10],i=0,j=0;
while(pow){
p[i++]=pow%10;
pow/=10;
}
// for(int k=0;k<i;k++)
// cout<<p[k]<<" ";
// cout<<endl;
while(n){
a[j++]=n%10;
n/=10;
}
// for(int k=0;k<i;k++)
// cout<<a[k]<<" ";
// cout<<endl;
for(int k=0;k<j;k++)
if(a[k]!=p[k])
return 0;
return 1;
}
int main(){
long long n;
while(scanf("%d",&n)!=EOF){
if(judge(n)==1)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}
二刷:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int main(){
long long a,b;
while(cin>>a){
b=a*a;
// cout<<b<<endl;
int tag=1;
while(a){
if(a%10!=b%10){
tag=0;
break;
}
a/=10;
b/=10;
}
if(tag==0)
cout<<"No"<<endl;
else
cout<<"Yes"<<endl;
}
return 0;
}

本文介绍了三种方法判断一个数字的平方与其本身数字相等:第一种使用while循环逐位比较,第二种将数字转换为数组并逐位对比,第三种简化版仅做一次除法运算。通过代码实例展示并探讨了它们的效率和简洁性。

被折叠的 条评论
为什么被折叠?



