the code is working fine.....but still m getting TLE....can sumone help me....plz
#include<stdio.h>
#include<math.h>
int main()
{
unsigned int g, a, t, d, y, knkout,i,r,carry,j,k,var;
char x[32];
int kn;
while(1)
{ scanf("%u%u%u%u", &g,&t,&a,&d);
if(!g&&!a&&!d&&!t)
return 0;
else
{
for(i=0;i<31;i++)
x[i]=48;
x[31]=0;
knkout=g*a+d;
y=log(knkout)/log(2);
r=knkout-pow(2,y);
if(r)
knkout=pow(2,y+1);
y=knkout-(g*a+d);
kn=knkout/2;
i=t-1;
while(i>0||kn>=1)
{
carry=0;
j=0;
k=i*g+kn;
kn=kn/2;
do
{
var=x[30-j]+k+carry;
carry=(var-48)/10;
x[30-j]=((var-48)%10) +48;
j++;
k=0;
}while(carry);
if(i!=0)
i--;
}
for(i=0;i<31;i++)
{
if(x[i]!=48)
break;
}
printf("%u*%u/%u+%u=",g,a,t,d);
if(i==31)
i--;
for(k=i;k<31;k++)
printf("%c",x[k]);
printf("+%u\n",y);
}
};
}