https://www.luogu.com.cn/problem/P1010

刚刚看到这个题时,有点懵,如果说这是个数学题

比如说7,应该先求出7 = 4 + 2 + 1;

即先分解出里面应该有最多的2的个数,然后再往下递推

  1. 算出2的多少次幂最接近给出的n;
  2. 用原来n的数减去2的幂,如果这个数大于2,继续对新的n进行搜索;
  3. 如果幂大于2,对幂进行上述搜索;
  4. 一旦输入函数的数为0(退出)或1(2的0次幂)或2(2的1次幂,这时候1不需要输出),输出;
#include <bits/stdc++.h>
using namespace std;
int n;
void search(int x){
if(!x)
return;
int p = ,q = ;
cout << ;
while(x >= p){
p *= ;
q++;
}
q--;
if(!q || q == )
cout << "(" << q << ")";
if(q >= ){
cout << "(";
search(q);
cout << ")";
}
x -= p / ;
if(x){
cout << "+";
search(x);
} }
int main(){
ios::sync_with_stdio();
cin >> n;
search(n);
return ;
}

P1010 幂次方(分治)的更多相关文章

  1. P1010 幂次方 P1022 计算器的改良

    P1010 幂次方 一.题目 https://www.luogu.org/problemnew/show/P1010 二.代码 #include<bits/stdc++.h> using ...

  2. 2021.07.26 P1010 幂次方(数论)

    2021.07.26 P1010 幂次方(数论) [P1010 NOIP1998 普及组] 幂次方 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.二进制 题意: 用20 ...

  3. p1010幂次方---(分治)

    题目描述 任何一个正整数都可以用222的幂次方表示.例如 137=27+23+20137=2^7+2^3+2^0 137=27+23+20 同时约定方次用括号来表示,即aba^bab 可表示为a(b) ...

  4. 洛谷 P1010 幂次方 Label:模拟

    题目描述 任何一个正整数都可以用2的幂次方表示.例如 137=2^7+2^3+2^0 同时约定方次用括号来表示,即a^b 可表示为a(b). 由此可知,137可表示为: 2(7)+2(3)+2(0) ...

  5. 解题笔记-洛谷-P1010 幂次方

    0 题面 题目描述 任何一个正整数都可以用2的幂次方表示.例如 137=2^7+2^3+2^0 同时约定方次用括号来表示,即a^b 可表示为a(b). 由此可知,137可表示为: 2(7)+2(3)+ ...

  6. P1010 幂次方 递归模拟

    题目描述 任何一个正整数都可以用22的幂次方表示.例如 137=2^7+2^3+2^0137=27+23+20 同时约定方次用括号来表示,即a^bab 可表示为a(b)a(b). 由此可知,13713 ...

  7. 洛谷P1010 幂次方

    题目描述 任何一个正整数都可以用2的幂次方表示.例如 137=2^7+2^3+2^0 同时约定方次用括号来表示,即a^b 可表示为a(b). 由此可知,137137可表示为: 2(7)+2(3)+2( ...

  8. 洛谷 P1010 幂次方

    做了好久,递归拆吧 #include<iostream>#include<cstdio>#include<cmath>using namespace std;int ...

  9. 集训作业 洛谷P1010 幂次方

    这个…… 这个题看上去有点难的样子. 仔细看看,感觉有点简单.啊,是递归啊,正经的看一看,好像是把一个数分成2的几次方的和. 然后余数和比他小的最大的2的次方数如果不是2的一次方或者2的0次方,就继续 ...

随机推荐

  1. C#设计模式学习笔记:(2)工厂方法模式

    本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7567880.html,记录一下学习过程以备后续查用. 一.引言 接上一篇C#设计模式学习笔记:简单工厂模式( ...

  2. Angular2的环境构筑

    1.nodejs安装   https://nodejs.org/en/download/   2.环境变量设定   Path->\node-v10.16.3-win-x64   3.在cmd下输 ...

  3. 【37】池化层讲解(Pooling layers)

    池化层(Pooling layers) 除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性,我们来看一下.   先举一个池化层的例子,然后我们再讨论池化层的 ...

  4. LeetCode 145. 二叉树的后序遍历 (用栈实现后序遍历二叉树的非递归算法)

    题目链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal/ 给定一个二叉树,返回它的 后序 遍历. 示例: 输入: [ ...

  5. JavaSE学习笔记(2)---面向对象基础

    JavaSE学习笔记(2)---面向对象基础 1.面向对象具有三大特征:封装性.继承性和多态性,而面向过程没有继承性和多态性,并且面向过程的封装只是封装功能,而面向对象可以封装数据和功能.所以面向对象 ...

  6. HTML连载65-过渡模块的基本使用

    一.过渡模块的基本使用 1.*:hover;这个伪类选择器除了可以用在a标签上,还可以用在其他任何标签上. 2.过渡三要素: (1)必须要有属性发生变化:(2)必须告诉系统哪个属性需要执行过渡效果:( ...

  7. .net mvc中epplus导出excel

    帮助类 using OfficeOpenXml; using OfficeOpenXml.Style; using System; using System.Collections.Generic; ...

  8. Codeforces Round #592 (Div. 2) D - Paint the Tree

    题目链接:https://codeforces.com/contest/1244/problem/D 题意:给你一个树,让你把树上的每个节点染成三种颜色,使得任意三个互相相邻的节点颜色都不一样(意思是 ...

  9. IO流学习之字符流(三)

    IO流之字符流缓冲区: 概念: 流中的缓冲区:是先把程序需要操作的数据保存在内存中,然后我们的程序读写数据的时候,不直接和持久设备之间交互,而改成和内存中的数据进行交互. 缓冲区:它就是临时存储数据, ...

  10. PAT (Basic Level) Practice (中文)1047 编程团体赛 (20 分)

    编程团体赛的规则为:每个参赛队由若干队员组成:所有队员独立比赛:参赛队的成绩为所有队员的成绩和:成绩最高的队获胜. 现给定所有队员的比赛成绩,请你编写程序找出冠军队. 输入格式: 输入第一行给出一个正 ...