1955-计算机基础知识大赛 2

描述

 

如果一个自然数n能写写成若干个连续自然数之和,则称其为自然数n的一个“分拆”。

如9=4+5,9=2+3+4,我们就说“4+5”与“2+3+4”是9的两个“分拆”。

编程求出任意数n的所有“分拆”。

输入

输入数据包含多组样例,每组样例包含一个自然数n。

输出

对于每组样例,列出所有可能分拆(按字典序,每行一种可能分拆,行内个数字以空格隔开),没有则输出 none。

样例输入

9

2

样例输出

2 3 4

4 5

none

#include<iostream>
using namespace std;
void put(int a,int b)
{
    int k;
    for(k=a;k<b;k++)
        cout<<k<<" ";
    cout<<b<<endl;
}
int main()
{
    int n;
    while(cin>>n)
    {
        int m,i,j,f;
        f=0;
        for(i=1;i<n;i++)
        {
            m=0;
            for(j=i;j<n;j++)
            {
                m=m+j;
                if(m==n) 
                {
                    put(i,j);
                    f=1;
                    break;
                }
                if(m>n) break;
            }
        }
        if(f==0) cout<<"none"<<endl;
    }
    return 0;
}

  

原文地址:https://www.cnblogs.com/Rosanna/p/3438641.html