【P1010-幂次方】解题记录
来源:互联网 发布:僧格林沁 知乎 编辑:程序博客网 时间:2024/05/16 12:23
原题点 这里
这是一道简单的分治题,其分治的思路为:
- 要输出 n 的二进制结果,先提取小于 n 的、最大的 2^m,输出 2^m 的二进制表示,再输出 n-2^m 的二进制表示。
- 要求 m,可以直接找到 n 的高位 1,它的位数减一即为 m 。
- 递归边界为 m 为 0 或 1,此时直接输出答案。
- 注意如果 n-2^m 为 0,就不用输出了,若不是要先输出 “+” 再继续递归。
代码:
#include <cstdio>using namespace std;// 返回小于等于 n 的最大的 2^x 的那个 xint high_bit(int n){ int exp=20; while(exp>=0){ int flag= 1<<exp; if(flag&n) return exp; --exp; } return -1; // n 是 0 的情况}void solve(int num){ int exp= high_bit(num), rest= num^(1<<exp); // num^(1<<exp) 等价于 num-(1<<exp) if(exp==0){ printf("2(0)"); } else if(exp==1){ printf("2"); } else{ printf("2("); solve(exp); printf(")"); } if(rest!=0){ printf("+"); solve(rest); }}int main(){ int input; scanf("%d", &input); solve(input); putchar('\n'); return 0;}
阅读全文
0 0
- 【P1010-幂次方】解题记录
- NOIp1998PJ/Luogu P1010 幂次方 解题报告
- 洛谷 P1010 幂次方
- P1010 幂次方
- P1010 幂次方
- P1010 幂次方 luogu
- 洛谷 P1010 幂次方
- P1010 幂次方
- 洛谷 P1010 幂次方
- 洛谷 P1010 幂次方
- 洛谷P1010 幂次方
- P1010 幂次方
- 洛谷P1010幂次方
- P1010 幂次方
- |洛谷|分治|P1010 幂次方
- 【分治】 洛谷 P1010 幂次方
- 洛谷——P1010 幂次方
- P1010移植记录(1)
- 应用监控预警--Pinpoint介绍
- ASM(Active Shape Model)算法介绍
- Flink学习笔记 --- Basic Concepts整理笔记
- react native环境搭建+genymotion
- MyBatis的事务处理的方式
- 【P1010-幂次方】解题记录
- 【线段树】COCI2010-2011(CONTEST#6)[STEP]题解
- Python的编码问题
- 分治算法——快速排序
- 教你如何学习自动化测试
- 计算机网络基础知多少
- Project facet Java 1.8 is not supported by target runtime Apache Tomcat v8.0解决
- Android adb shell KeyCode列表
- 算法练习_LeetCode_链表1