編程題1

來源:互聯網
上載者:User

題目描述:一個正整數有可能可以被表示為 n(n>=2) 個連續正整數之和,如:

15=1+2+3+4+5
15=4+5+6
15=7+8

請編寫程式,根據輸入的任何一個正整數,找出符合這種要求的所有連續正整數序列。

輸入資料:一個正整數,以命令列參數的形式提供給程式。

輸出資料:在標準輸出上列印出符合題目描述的全部正整數序列,每行一個序列,每個序列都從該序列的最小正整數開始、以從小到大的順序列印。如果結果有多個序列,按各序列的最小正整數的大小從小到大列印各序列。此外,序列不允許重複,序列內的整數用一個空格分隔。如果沒有符合要求的序列,輸出 “NONE” 。

例如,對於 15 ,其輸出結果是:

1 2 3 4 5
4 5 6
7 8
對於 16 ,其輸出結果是:
NONE

評分標準:程式輸出結果是否正確。

#include<stdio.h>
#include <string.h>
#include<iostream>    //標準c++輸入/輸出
using namespace std;  //使用std命名空間
//以上為標準標頭檔等

int main()
{
 int n,output,i,j,num,k;
 cout<<"輸入一個正整數:"<<endl;
 cin>>n;
 for (num=n/2;num>=2;num--)//num代表幾個數的和
 {

    for ( i=1;i<n;i++)//i代表 連續和的第一個數字
    {
     output=0;
     for (j=1;j<=num;j++)
     {
      output+=i+j-1;
     }
     if (output==n)
     {
      for (k=0;k<num;k++)
      {
      
       cout<<i+k<<" ";
      }
      cout<<endl;

     }
    }
 }
return 0;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.