提交: 1200
解决: 206
[ 提交][ 状态][ 讨论版]
[ 提交][ 状态][ 讨论版]
题目描述
Give you a number named N; please tell me how many ways to arrive N use two square
integers.
输入
There are many of test cases. For each test case, just one line contains a number N
(1<=N<=1000000).
Proceed to the end of file.
输出
If there is no way to arrive N use two square numbers, please output “No Solution!”, and
else output an integer indicating the ways number.
样例输入
50
9
样例输出
2
1
提示
There is two ways to arrive number 50:
First: 50 = 1 + 49
Second: 50 = 25 + 25
There is one way to arrive number 9: 9 = 0 + 9
来源
#include<stdio.h>
#include <string.h>
int N[1000001];
int main()
{ memset(N,0,sizeof(N));
int i,j,k;
for (i=0;i<=1000;i++){
for (j=i;j<=1000;j++){
if ((i*i+j*j)>1000000) break;
N[i*i+j*j]++;
}
}
while(scanf("%d",&k)!=EOF)
{
if(N[k])printf("%d\n",N[k]);
else printf("No Solution!\n");
}
return 0;
}