Question is really good ,One Soln is given below . Run and check with diff input.
#include<stdio.h>
int main()
{
int num,sum1=0,index=1,sum2=0;
printf("Enter a no(>0) ");
scanf("%d",&num);
if(num <= 0 )
{
printf("Wrong Input\n");
return 0;
}
for(index;;index++)
{
sum1=sum1+index;
if(sum1>=num)
break;
}
if(sum1 == num )
{
if(num == index)
{
printf("NO ANSWER\n");
return 0 ;
}
printf("Num(%d) = ",num );
for(int temp=1;temp<=index;temp++)
printf(" %d +",temp);
printf("\b \n");
return 0;
}
for(int i=1;i<index;i++)
{
sum2+=i;
if((sum1-sum2) == num )
{
if((i+1) == index)
{
printf("NO ANSWER\n");
return 0 ;
}
printf("Num(%d) = ",num );
for(int temp= i+1;temp<=index;temp++)
printf(" %d +",temp);
printf("\b \n");
return 0 ;
}
}
printf("NO ANSWER\n");
return 0 ;
}
Hi All ,
Above Code will not work for some specific input.
odd number has two solution.
suppose num is 9 then "9=2+3+4" OR "9=4+5"
Run the following code and test it .
#include<stdio.h>
int main()
{
int num,sum1=0,index=1,sum2=0,Soln=0;
printf("Enter a no(>0) ");
scanf("%d",&num);
if(num <= 0 )
{
printf("Wrong Input\n");
return 0;
}
for(index;;index++)
{
sum1=sum1+index;
if(sum1>=num)
break;
}
if(sum1 == num )
{
if(num == index)
{
printf("NO ANSWER\n");
return 0;
}
Soln++;
printf("Solution-%d : %d = ",Soln,num );
for(int temp=1;temp<=index;temp++)
printf(" %d +",temp);
printf("\b \n");
}
for(int i=1;i<index;i++)
{
sum2+=i;
if((sum1-sum2) == num )
{
if((i+1) == index)
{
// printf("NO ANSWER\n");
break;
}
Soln++;
printf("Solution-%d : %d = ",Soln,num );
for(int temp= i+1;temp<=index;temp++)
printf(" %d +",temp);
printf("\b \n");
break;
}
}
//if( Soln == 0 && num >= 9 && num/2 == (num-1)/2 ) //--> if U don't want more than one ,soln use this
if( num >= 9 && num/2 == (num-1)/2 ) //--> if U want more than one soln, use this
{
Soln++;
printf("Solution-%d : %d = %d + %d\n",Soln,num ,num/2,num/2+1);
return 0;
}
if(Soln==0)
printf("NO SOLUTION\n");
return 0 ;
}