1162

来源:互联网 发布:丹尼斯约翰逊数据 编辑:程序博客网 时间:2024/06/11 00:01
提交: 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.

样例输入

509

样例输出

21

提示

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

来源

2012黑龙江省赛


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

0 0
原创粉丝点击