程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 表正整數n為連續整數的條件和方法

表正整數n為連續整數的條件和方法

編輯:關於JAVA

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

還搜索到程序的實現: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;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved