博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【noi 2.2_8758】2的幂次方表示(递归)
阅读量:6194 次
发布时间:2019-06-21

本文共 1910 字,大约阅读时间需要 6 分钟。

题意:将正整数N用2的幂次方表示(彻底分解至2(0),2)。

解法:将层次间和每层的操作理清楚,母问题分成子问题就简单了。但说得容易,操作没那么容易,我就打得挺纠结的......下面附上2个代码,都借用了数组储存,而代码2是我近期打的,应该是更优美一点的。

1 #include
2 #include
3 #include
4 5 struct node 6 { 7 int s[100]; 8 int t; 9 };10 node a,c[30];11 12 node div(int x)13 {14 int u=0;15 a.t=0;16 while (x>0)17 {18 if (x%2) a.s[++a.t]=u;19 x/=2,u++;20 }21 return a;22 }23 24 int dep=0;25 26 void print(int x)27 {28 if (!x) {printf("%d",x);return;}29 dep++;30 c[dep]=div(x);31 int tmp=dep;32 for (int i=c[tmp].t;i>=1;i--)33 {34 if (i!=c[tmp].t) printf("+");35 if (c[tmp].s[i]==1) {printf("2");continue;}36 printf("2(");37 print(c[tmp].s[i]);38 printf(")");39 }40 }41 42 int main()43 {44 int n;45 scanf("%d",&n);46 print(n);//step1=step2=step3...directly recursion47 return 0;48 }
View Code 1
1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 #define N 20010 7 int s[20][6],h[20];//s[i][] i=sum{2^s[i][1~...]} 8 9 void print(int k)10 {11 if (!k) {printf("0");return;}12 for (int i=1;i<=h[k];i++)13 {14 if (i!=1) printf("+");15 if (s[k][i]==1) {printf("2");continue;}16 printf("2(");17 print(s[k][i]);18 printf(")");19 }20 }21 void init(int x,int id)22 {23 h[id]=0;24 int t=0;25 while (x)26 {27 if (x&1) s[id][++h[id]]=t;28 x/=2,t++;29 }30 for (int i=1;i<=h[id]/2;i++)31 {t=s[id][i]; s[id][i]=s[id][h[id]-i+1]; s[id][h[id]-i+1]=t;}32 }33 int main()34 {35 int n;36 scanf("%d",&n);37 for (int i=1;i<=16;i++) init(i,i);38 init(n,17);39 print(17);40 return 0;41 }
View Code 2

 

转载于:https://www.cnblogs.com/konjak/p/6017304.html

你可能感兴趣的文章
“业务为王”时代下,DevOps怎么玩?
查看>>
2017技术趋势:最受欢迎的几大工具
查看>>
*ST京蓝入股力合节能 着力绿色智慧城市服务
查看>>
缺陷上报统一模板及缺陷管理流程
查看>>
手机视频监控系统在智能家居中的应用
查看>>
Google AI子公司采用区块链技术来跟踪英国的健康数据
查看>>
力成科技股东会决议通过紫光投资案
查看>>
推荐10款免费的在线UI测试工具
查看>>
《嵌入式系统数字视频处理权威指南》—— 导读
查看>>
侵犯公民个人信息: “两高”首次出台司法解释 打击大数据征信乱象
查看>>
《Photoshop修色圣典(第5版)》—第1章1.13节你将是裁判
查看>>
《大数据算法》一2.4 数组有序的判定算法
查看>>
我的友情链接
查看>>
Option parsing
查看>>
学生信息管理系统
查看>>
PHP课程总结20161222
查看>>
安装Discuz
查看>>
论车牌识别与电子警察关系
查看>>
Confluence-企业知识管理与协同软件安装步骤
查看>>
HTML5实现文字轮滚
查看>>