题意:假设圆的圆心位于(0,0),半径为r,圆的"某积"公式为S=r2,请问"某积"为s的圆上有多少个以整数为坐标的点?
思路:想办法优化双重循环就直接单重循环中间判断,但需要注意非0数开平方会有正负两个值,需要+2。
#include <iostream>
#include <string.h>
#include <algorithm>
#include <math.h>
using namespace std;
int main(){
long long s;
while(cin>>s){
long long cnt=0;
double r=sqrt(s*1.0);
for(int a=(int)-r;a<=(int)r;a++){
int b=sqrt(s-a*a);
if(b*b==s-a*a){
if(b==0)
cnt++;
if(b!=0)
cnt+=2;
//cout<<"a"<<a<<"b"<<b<<endl;
}
}
cout<<cnt<<endl;
}
return 0;
}