We know that some positive integer x can be expressed as x=A^2+B^2(A,B are integers). Take x=10 for example,
10=(-3)^2+1^2.
We define R(N) (N is positive) to be the total number of variable presentation of N. So R(1)=4, which consists of 1=1^2+0^2, 1=(-1)^2+0^2, 1=0^2+1^2, 1=0^2+(-1)^2.Given N, you are to calculate R(N).
Input
No more than 100 test cases. Each case contains only one integer N(N<=10^9).
Output
For each N, print R(N) in one line.
Sample Input
2
6
10
25
65
Sample Output
4
0
8
12
16
Hint
For the fourth test case, (A,B) can be (0,5), (0,-5), (5,0), (-5,0), (3,4), (3,-4), (-3,4), (-3,-4), (4,3) , (4,-3), (-4,3), (-4,-3)
这是一道思维题,对于 x=A^2+B^2,A或B的最大值为sqrt(x),假设A的值为从0到sqrt(x)中的任意一值,则B为sqrt(x-A*A);
那么如果A^2+B^2==x,则这种A和B就是成立的,即A B,-A B,A-B,-A-B都成立。
注意循环要从1开始,因为如果从0开始,会多算4个。因为开始的0 sqrt(x)和最后的sqrt(x) 0组合中(sqrt(x)*sqrt(x)=x),
0没有正负之分.
import java.util.Scanner;
import java.math.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int N=sc.nextInt();
int m=(int)Math.sqrt(N);
int sum=0;
for(int a=1;a<=m;a++){
int b=(int)Math.sqrt(N-a*a);
if(N==a*a+b*b){
sum+=4;
}
}
System.out.println(sum);
}
}
}