希望能描述的清楚点
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int counter=0;
double a,b,c;
cin>>c;
for(a=1;a<=c/sqrt(2);a++)
{
b=sqrt(c*c-a*a);
if(b==(int)b)
counter++;
}
cout<<counter<<endl;
return 0;
}
就是判断b是不是整数,如果b不是整数:
如b=5.4,那么(int)b=5,然后比较的时候再转换回来的时候就是5.0,那么就不相等
如果b=5.0,那么(int)b=5,然后比较的时候再转换回来的时候还是5.0,那么就相等
判断b是不是整数,假如b为1.0,那么int(b)和b是相等的,假如b为1.1,那么两者不相等
应该就是确定b是不是整数吧,
int那个是强制转换。如果b是小数,小数转换成int就会把小数点后面的都去掉,这样就和b不一样了,如果是整数的话,强制转换还是原来的数就没变,就可以查出是不是开根号是不是整数了