70,023
社区成员




#include <stdio.h>
#define MaxN 30
int Terms[MaxN] ;
int N ;
int count ;
void Search( int remainder , int start , int nTerm )//remainder剩余数值
//start后面的分解项不超过start
// nTerm已分解项数
{
int i;
if( remainder==0 )
{
count++ ; //记录当前结果数,方便输出符号
if( count%4 != 1 )
printf(";") ;
printf( "%d=%d",N,Terms[0] ) ;
for(i=1 ; i<nTerm ;i++)
printf( "+%d" , Terms[i] ) ;
if (count%4==0)
printf("\n") ;
}
else
for( i=start ; i<=remainder ; i++ )
{
Terms[nTerm] = i ;
Search( remainder-i , i , nTerm+1 ) ;
}
}
int main()
{
scanf("%d" , &N) ;
count = 0 ;
Search(N , 1 , 0) ;
if(count%4!= 0)
printf("\n") ;
return 0 ;
}