# Facebook Hacker Cup: Qualification Round

Double Squares

I had recently registered for Facebook Hacker Cup and decided to take up the challenge. I completed the Double Squares challenge and the Studious Student. As a hacker, an algorithm or a programming hacker, I believe in sharing and definitely LOVE to share.

Well, at the end of the day, I believe everyone has the privilege to learn and the learning process may not be smooth but we all learn eventually.

Somebody once asked, *“Explain in human terms or layman terms what is a loop?”* Now this is how I will answer:

Learning is a process. I learnt during the process either by my own or through somebody’s help and so on. That’s my learning curve. Now I want to share, so that somebody else will learn and benefit from it. It goes round and never stop. Learning is like a loop.

A double-square number is an integer **X** which can be expressed as the sum of two perfect squares. For example, 10 is a double-square because 10 = 32 + 12. Your task in this problem is, given **X**, determine the number of ways in which it can be written as the sum of two squares. For example, 10 can only be written as 32 + 12 (we don’t count 12 + 32 as being different). On the other hand, 25 can be written as 52 + 02 or as 42 + 32.

**Input**

You should first read an integer **N**, the number of test cases. The next **N** lines will contain **N** values of **X**.

**Constraints**

0 ≤ **X** ≤ 2147483647

1 ≤ **N** ≤ 100

**Output**

For each value of **X**, you should output the number of ways to write **X** as the sum of two squares.

Here is how you do it in Ruby.