对于一个数组{a,b,c}满足a<b<c,a的平方+b的平方=c的平方;
现在已知 a+b+c=1000;求abc的乘积

解决方案 »

  1.   

    直角三角形边长分别为a b c(a,b为直角边长)
    周长1000 
    求a*b*c;
      

  2.   

    for (int i = 1; i < 332; i++) {
    for (int j = i + 1; 1000 - i - j > j; j++) {
    int k = 1000 - i - j;
    if (i * i + j * j == k * k) {
    System.out.printf("%d %d %d", i, j, k);
    System.out.println(i * j * k);
    break;
    }
    }
    }这是我的解法,抛砖引玉
      

  3.   

    求指教……这两个问题有啥区别?除了a>b。
      

  4.   

    补充下,还有扩充数。
    比如345,那么3n,4n,5n也是勾股数。所以应该算a+b+c能不能被1000整除
      

  5.   

    直角三角形边长分别为a b c(a,b为直角边长)
    周长1000  
    求a*b*c;
    ==================
    这个才是莫名其妙!
    看出来是直角三角形,周长,如果仅仅到这,并不能使问题的求解变得简单,这也是我说没多大意义的原因。
    既然是直角三角形,那就是勾股数了。
    把问题转化成【如何快速求勾股数】,这才是真正看出问题所在
      

  6.   

    C++编写如下:
    #include<iostream>
    using namespace std;
    int main()
    {
    int a,b,c;
    for(a=0;a<1000;a++)
    for(b=0;b<1000;b++)
    for(c=0;c<1000;c++)
    if(a<b&&b<c&&a*a+b*b==c*c&&a+b+c==1000)
    cout<<a<<"  "<<b<<"  "<<c<<endl;
    cout<<endl;
    return 0;
    }
      

  7.   

    知道了三角形可以更加精确一点:
                      1.首先等腰直角三角形的直角边最短。假设a+b=c,a=250.a+b>c.所以a<250.
                    2.250<b<500.
                    3.c必须大于500.