【aabb 7744】

来源:互联网 发布:前线seo 编辑:程序博客网 时间:2024/06/11 11:34

输出所有形如aabb的四位完全平方数(即前两位数字相等,后两位数字也相等)。

第一种:

#include<iostream>#include<cstdio>#include<cmath>using namespace std;int main(){int a,b,n;double m;for(a=1;a<=9;a++)for(b=0;b<=9;b++){n=a*1100+b*11;m=sqrt(n);if(floor(m+0.5)==m)printf("%d\n",n);}}

浮点数的元算有可能存在误差,不是一定存在,但经常都会。

floor(X)返回X的整数部分。

经过大量的运算,由于误差的影响,整数1变成0.99999999,floor的结果会是0而不是1.

我们一般改为四舍五入的,floor(X+0.5)。

第二种:

#include<iostream>#include<cstdio>using namespace std;int main(){int x,n,hi,lo;for(x=1;;x++){n=x*x;if(n<1000)continue ;if(n>9999) break;hi=n/100;lo=n%100;if(hi/10==hi%10 && lo/10==lo%10)printf("%d\n",n);}}

由于浮点数的误差,所以下边的是错误的

#include<iostream>#include<cstdio>#include<cmath>using namespace std;int main(){int a,b,n;double m;for(a=1;a<=9;a++)for(b=0;b<=9;b++){n=a*1100+b*11;m=sqrt(n);if(n==m*m)printf("%d\n",n);}}


原创粉丝点击