HDU3835

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);
        }
    }

}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值