1. 程式人生 > >網易筆試題:輸入一個正整數,若該數能用幾個連續正整數之和表示,則輸出所有可能的正整數序列。

網易筆試題:輸入一個正整數,若該數能用幾個連續正整數之和表示,則輸出所有可能的正整數序列。

解題思路:           **找到數學規律。n以i為開頭的j個整數的和為i*j+j*(j-1)/2;判斷輸入的整數是否和計算結果相同。           如果相同則迴圈輸出以i為開頭的j個整數。           這個題目給我最大的啟示就是要學會用數學的方法來解決問題,在此之前我一直希望通過一種遞迴或者迴圈           來建立一個包含所有能被連續整數和表示的整數集合,這我個人認為是一種計算機式的思維。           以後在解決問題的時候要嘗試數學抽象來解決問題。  */ public  static   void  print(int  n){
int  r = 0;
for(int i = 1; i< (n+1)/2;  i++){
for(int  j = 1; j< (n+1)/2; j++){
r = i*j + j*(j-1)/2;
if(r == n){
System.out.println("存在從  " +i +"  開始的連續   "+j+"個數字,使得它們的和為  "+ n);
return;
}
}//inner for
}//  outer  for

System.out.println("不存在連續的數字使得它們的和為   "+ n);
}