笨鳥

          天道酬勤,思者常新;博觀約取,厚積薄發;心如止水,氣貫長虹;淡泊明志,寧靜致遠。
          posts - 10, comments - 0, trackbacks - 0, articles - 1
              問題描述如下:
                  “畢達哥拉斯三元數組存在{a,b,c},a<b<c,使得a^2+b^2=c^2,如3^2+4^2=5^2=25,求a,b,c滿足以上條件,并使a+b+c=1000,給出a*b*c的值。”

              代碼如下:
          /**
               * 求畢達哥拉斯三元數組{a,b,c},使得a+b+c=target . 畢達哥拉斯三元數組存在{a,b,c},a<b<c,使得a^2+b^2=c^2
               * a > 3,(target-(a+b))^2=c^2=a^2+b^2 --> target^2=2*target*(a+b)-2ab
               * 
               * 
          @return
               
          */

              
          private static int getNumber(int target) {
                  
          int a = 0;
                  
          int b = 0;
                  
          int c = 0;
                  
          for (int i = 3; i < target; i++{
                      
          for (int j = i; j < target; j++{
                          
          if (target * target == 2 * target * i + 2 * target * j - 2 * i
                                  
          * j) {// target^2=2*target*(a+b)-2ab
                              a = i;
                              b 
          = j;
                              
          break;
                          }

                      }

                  }

                  c 
          = target - a - b;
                  
          return a * b * c;
              }

              具體的分析可以看代碼注釋。得出結果31875000。
              除了直接的辦法,應該還有另外的方法來求,保持未完待續狀態。
              請不吝賜教。
              @anthor ClumsyBird


          -----------------------------
          博觀約取,厚積薄發

          主站蜘蛛池模板: 定西市| 股票| 绥阳县| 德化县| 永春县| 吉木乃县| 西和县| 淄博市| 南开区| 辽阳县| 彭州市| 孝义市| 五常市| 图们市| 蓝山县| 阿克陶县| 酒泉市| 开化县| 光泽县| 东乌珠穆沁旗| 景谷| 阿克| 张掖市| 萨嘎县| 伊宁县| 昆明市| 莒南县| 天镇县| 彰化县| 雷波县| 呼伦贝尔市| 奈曼旗| 贵州省| 张家川| 修武县| 安顺市| 民和| 贵南县| 吴江市| 枞阳县| 咸丰县|