博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NOIP幂次方
阅读量:4654 次
发布时间:2019-06-09

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

#include
int c[20] = { 1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768 };//由题意n最大为20000,所以最多会用到2的14次方//为了防止mid+1出错,故写到15次方int binarySearch(int x, int mid) { if (x >= c[mid] && x < c[mid + 1]) { return mid; } if (x >= c[mid + 1]) return 20; return -1;}int serch(int x) {
//利用二分查找找到x的最大二次方 int left = 0; int right = 15; int mid; while (left <= right) { mid = (left + right) >> 1; if (binarySearch(x, mid) == -1) { right = mid - 1; } else if (binarySearch(x, mid) == 20) { left = mid + 1; } else { return mid; } }}void divite(int x) {
//分治求解:因为每个整数的划分方法是一样的 if (x == 0) return; int flag = serch(x); int li = x - c[flag]; if (flag == 0) { printf("2(0)"); } if (flag == 1) { printf("2"); } if (flag > 1) { printf("2("); divite(flag); printf(")"); } if (li > 0) { printf("+"); divite(li); }}int main() { int n; scanf("%d", &n); divite(n); return 0;}

 

转载于:https://www.cnblogs.com/lin0/p/8550722.html

你可能感兴趣的文章
mybatis实战教程三:mybatis和springmvc整合
查看>>
Java多线程:Semaphore
查看>>
960栅格化优势
查看>>
LSP原则—关于正方形不是长方形
查看>>
Android内核开发 相关工具及源码下载汇总
查看>>
多线程(二)--NSThread基本使用
查看>>
git command
查看>>
使用Photon引擎进行unity网络游戏开发(二)——Photon常用类介绍
查看>>
html里 调整字间距
查看>>
RabbitMQ的Vhost,Exchange,Queue原理分析
查看>>
Mac上编写C语言程序
查看>>
251.Flatten 2D Vector
查看>>
WLS Exception: Need to specify class name in environment or system property Solution
查看>>
人见人爱A^B
查看>>
android游戏开发框架libgdx的使用(一)--环境搭建
查看>>
【转】wait_fences: failed to receive reply: 10004003问题的引起原因
查看>>
PE制作实录 —— 定义我的 PE 工具箱
查看>>
C++优先队列的重载(最小堆、最大堆)
查看>>
【读书笔记】理解基本排序算法
查看>>
消除头文件
查看>>