才学会的C语言 求大佬解释啊 问题 H: 二的幂次方

柠檬味火锅 2019-05-08 11:13:51
题目描述

任何一个正整数都可以用2的幂次方表示。

例如:

137=27+23+20

同时约定次方用括号来表示,即ab 可表示为a(b)。



由此可知,137可表示为:

2(7)+2(3)+2(0)

进一步:7= 22+2+20(21用2表示)

3=2+20

所以最后137可表示为:

2(2(2)+2+2(0))+2(2+2(0))+2(0)

又如:

1315=210 +28 +25 +2+1

所以1315最后可表示为:

2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)




C语言版答案 #include<stdio.h> void put(int num,int n); int main() { int num; scanf("%d",&num); put(num,0); } void put(int m,int n) { int r; if(m==0) { return; } r=m%2; m=m/2; put(m,n+1); if(m!=0&&r!=0) { printf("+"); } if(r==1) { if(n==0) { printf("2(0)"); } else if(n==1) { printf("2"); } else if(n==2) { printf("2(2)"); } else { printf("2("); put(n,0); printf(")"); } } }
...全文
98 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧