注册 登录
编程论坛 C语言论坛

错在哪

蒟蒻 发布于 2019-11-14 20:16, 1640 次点击



沫沫,灰灰和渣渣去锻炼身体,如果对他们跑步的距离分别只计整数 a、 b、 c,由于他们身高的差距,造成了 a<=b<=c,并且渣渣跑了N米之后就再也跑不动了。但是,按照他们事先的约定: 只有当 c*c==a*a+b*b 时,他们的锻炼才有效果。

现在他们三个人想知道,如果渣渣的极限N已知,那么有多少种有锻炼效果的跑步方案(即a, b, c有多少种可能的取值)。


输入格式:

一个整数N,表示渣渣的体力极限, N <= 5000。


输出格式:

一个整数,代表他们跑步方案的个数。

Hint:对于输入N=5,有方案 a=3, b=4, c=5, 共一种。


输入样例:

5


输出样例:
1













#include <stdio.h>  
#include <stdlib.h>  
 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */  
 
int main(int argc, char *argv[]) {  
    int N;
    scanf("%d",&N);
    int k=0,i1,i2;
    for(i1=N-1;i1>=1;i1--){
        for(i2=N-1;i2>=1&&i2<=i1;i2--){
            if(N*N==i1*i1+i2*i2){
                k++;
            }
        }
    }
    printf("%d",k);
   
    return  0;
}
2 回复
#2
forever742019-11-14 20:55
1、scanf后面再定义变量,这不符合纯C的语法。
2、按你的思路,N为10的时候,i1=9试过以后试算到i1=8,接下来i2会老老实实干活么?
#3
纯蓝之刃2019-11-14 21:02
for(i2=N-1;i2>=1&&i2<=i1;i2--)
应该改成for(i2=il;i2>=1;i2--)
1