#include <stdio.h>
#include <math.h>
int change(int test); /* 判定函数 测试TEST */
int fun(int num); /* 判断NUM中可以找到最大的2^n 返回n */
int nn(int n); /* 返回2^n的大小 */
void main()
{
int n=0;
scanf("%d",&n);
while(n)
{
change(n);
printf("\n");
scanf("%d",&n);
}
}
int nn(int n)
{ int i,sum=1;
for(i=0;i<n;i++)
sum=sum*2;
return sum;
}
int fun(int num)
{
int i=0;
if(num<2)
{
return 0;
}
else
i++;
return i+fun((int)(num/2));
}
int change(int test)
{
int n;
if(test==2)
{
printf("2");
}
else if(test==1)
{
printf("2(0)");
}
else if(test==3)
{
printf("2+2(0)");
}
else if(test>3)
{
printf("2(");
n=fun(test); /* 根据N的大小用函数求出2(N)的N的展开情况 重复调用CHANGE 函数 */
change(n); /* 调用自身 */
printf(")");
if(test-nn(n)>0)
{
printf("+"); /* 如果TEST 在经过一次展开之后余下部分仍然大于0 那么输出一个“+”号 */
change(test-nn(n)); /* 并且将剩下的部分继续用此函数展开 */
}
}
return 1; /* 正常结束返回1 */
}
正文
stu(1162)2005-08-30 20:18:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/elva6401/4274.html
阅读(2362) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论