· 洛谷P1010递归法题解

洛谷P1010递归法题解

261 字
1 分钟
洛谷P1010递归法题解
StarryLin/Geek · 摘要

本文讲解洛谷P1010幂次方递归解法:将n按2的幂拆分,用递归输出带括号的2的幂表达式,并以2的0次方和1次方为递归终点。

————————————本文旨在讨论计算机知识,欢迎指正——————————————

输入输出样例#

** 输入 ** 1315 输出

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

说明/提示#

** 【数据范围】

对于 100% 的数据,1≤n≤2×104。

1≤n≤2×104

首先,我们观察这道题,笔者看到这道题一开始也是很懵,关于如何输出这种长长的一行,但是,我们经过拆解可以发现: 2的十次方,括号内是2加2的3次方,也就是8,根据括号中叠括号的方式,我们可以尝试用递归的方式来做题: 注意:2的0次方和2的一次方是特殊的,分别是最基础的奇数和偶数,其它数字都是这样合成的: 于是我们得把0和1次方作为终点; 那么,我们可以写出这样的函数:

void solve(int n)
{
for (int i = 14; i >= 0; i--)
{
if (pow(2, i)
#include
using namespace std;
int n;
void solve(int n)
{
for (int i = 14; i >= 0; i--)
{
if (pow(2, i) > n;
solve(n);
return 0;
}

希望能对你有所帮助!

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

洛谷P1010递归法题解
https://mjzy.tech/posts/knowledge/洛谷p1010递归法题解/
作者
JIA
发布于
2026-06-21
许可协议
CC BY-NC-SA 4.0

评论区

正在加载 GitHub 评论…

Tips · 随手记
仅自己可见 · 每篇文章单独保存

文章目录