描述
如果一个自然数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; }