笨鳥

          天道酬勤,思者常新;博觀約取,厚積薄發;心如止水,氣貫長虹;淡泊明志,寧靜致遠。
          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


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

          主站蜘蛛池模板: 五大连池市| 禄劝| 彭阳县| 陕西省| 丰原市| 民和| 铜山县| 左云县| 河曲县| 久治县| 辽阳市| 桂平市| 泊头市| 宜章县| 贡觉县| 永吉县| 五大连池市| 湘乡市| 凭祥市| 聂拉木县| 建湖县| 方城县| 增城市| 禄丰县| 潼南县| 平舆县| 锡林郭勒盟| 永康市| 天津市| 华亭县| 昂仁县| 肇庆市| 肇源县| 繁峙县| 阳春市| 五台县| 新建县| 宁强县| 龙口市| 泸溪县| 红原县|