qiyadeng

          專注于Java示例及教程
          posts - 84, comments - 152, trackbacks - 0, articles - 34

          今天看到關于一個整數表示為n個連續(xù)整數和的問題。搜索了下找到如下文章:

          表為連續(xù)正整數
          View SlideShare document or Upload your own.

          還搜索到程序的實現:http://blog.csdn.net/Solstice/archive/2006/09/13/1217700.aspx

          http://squall.cs.ntou.edu.tw/cprog/Assignments/99Fall/FindGivenSum.html

          http://blog.chinaunix.net/u2/76292/showart_1359876.html(這個是不正確的)

           

          我也簡單的實現了下:(g++編譯,主要思路是利用等差數列求和公式n=(a+a+k)*(k+2)/2列舉k,找到合適的a)

          #include <iostream>
          #include <math.h>
          using namespace std;
          
          int main(){
          
              int n;
              cout<<"input n:"<<endl;
              cin>>n;
          
              int maxk=(int)sqrt((double)n*2);
          
              int flag = 0;
          
              //cout<<"maxk="<<maxk<<endl;
          
              //for(int i=1;i<maxk+1;i++){
              for(int i=maxk+1;i>0;i--){
                   double a = n/(double)(i+1)-i/(double)2;
                  //cout<<"a="<<a<<endl;
              
                  if(a>0&&a-(int)a==0){
                      //cout<<i<<endl;
                      for(int j=0;j<i+1;j++){
                          cout<<a+j<<" ";
                      }
                      cout<<endl;
                      flag=1;
                  }
          
              }
              if(flag==0){
                  cout<<"NONE"<<endl;
              }
              return 0;
          
          }
          
          

          Feedback

          # re: 表正整數n為連續(xù)整數的條件和方法  回復  更多評論   

          2009-01-19 23:51 by 墻頭草
          不錯哦~~~~~




          =================================================================
          Struts2的零配置
          Struts2利用stream直接輸出Excel
          Struts2結合dhtmlx tree
          Struts2中ZeroConfig和CodeBehind下的Stream類型返回
          struts中html:select標簽和html:options 的使用

          更多Struts

          # re: 表正整數n為連續(xù)整數的條件和方法  回復  更多評論   

          2009-01-22 10:45 by appu
          good.
          實現倒是不難, 關鍵是怎么樣讓它執(zhí)行次數最少,至少是比較少。

          # re: 表正整數n為連續(xù)整數的條件和方法  回復  更多評論   

          2010-08-11 10:59 by glq2000
          網上講連續(xù)整數和問題的博文很多,但博主這篇最講的最明白,贊一個~~~

          我按照樓主論文提供的方法寫了一個,代碼如下,其循環(huán)次數為O(n/4),相比之下還是樓主的方法更快些,循環(huán)次數為O(sqrt(2n)),
          void ContinueInt(int n)
          {
          int i, k, m, num=0;
          for(i=3; i<n/2+1; i +=2) //以步長為2從3開始到n/2為止,求n的所有奇數因子
          {
          if(n%i == 0)
          {
          ++num;
          m = n/i;
          k = (i-1)/2;
          for(int j=(m-k>0)?(m-k):(k-m+1); j<=m+k; ++j) //利用論文中的結論
          cout<<j<<" "; //即n=(2k+1)*m=(2k+1)*2m/2=(2k+1)(m-k+m+k)/2
          cout<<endl;
          }
          }
          if(n%2)//n本身是奇數
          {
          ++num;
          cout<<(n-1)/2<<" "<<(n-1)/2+1<<endl;
          }
          cout<<"in all, num="<<num<<endl;
          }

          只有注冊用戶登錄后才能發(fā)表評論。


          網站導航:
           
          主站蜘蛛池模板: 石渠县| 南郑县| 宜宾县| 东兰县| 苍梧县| 渑池县| 呼图壁县| 裕民县| 虞城县| 阳春市| 印江| 鄄城县| 儋州市| 巴中市| 平顺县| 正镶白旗| 武冈市| 宜都市| 塘沽区| 子洲县| 舞钢市| 长治县| 水城县| 剑阁县| 兴国县| 南涧| 新宁县| 贡山| 铜陵市| 比如县| 宁德市| 毕节市| 赤城县| 兴山县| 堆龙德庆县| 璧山县| 乐业县| 龙川县| 子长县| 措勤县| 尼木县|