NC15979 小q的数列

题目

题目描述

小q最近迷上了各种好玩的数列,这天,他发现了一个有趣的数列,其递推公式如下:

\[f[i] =
\left\{
\begin{array}{l}
0 ,& i = 0\\
1 ,& i=1\\
f[i/2]+f[i\%2],& i\geq 2
\end{array}
\right.
\]

现在,他想考考你,问:给你一个 \(n\) \((n<10^{18})\),代表数列的第 \(n\) 项,你能不能马上说出 \(f[n]\) 的值是多少,以及 \(f[n]\) 所代表的值第一次出现在数列的哪一项中?

输入描述

输入第一行一个 \(t\)

随后 \(t\) 行,每行一个数 \(n\) ,代表你需要求数列的第 \(n\) 项,和相应的 \(n'\)

\((t<4 \cdot 10^5)\)

输出描述

输出每行两个正整数

\(f[n]\) 和 \(n'\) ,以空格分隔

示例1

输入

2
0
1

输出

0 0
1 1

题解

思路

知识点:递归,思维。

按公式递归求值不难,接下来证明求最小 \(n'\)。

若把 \(n\) 看成二进制,公式可理解为 \(f[n>>1] + f[n\&1]\) ,即对于每位如果为 \(1\) 则加 \(1\) ,因此 \(f[n]\) 的结果是 \(n\) 二进制位为 \(1\) 的数量。那么一个数 \(n'\) , \(f[n']\)与 $f[n] $ 相同而且要最小,只要把 \(f[n]\) 个 \(1\) 从低位到高位排列,就能构造 \(n'\)。所以,\(n' = 2^{f[n]-1}\) 。

时间复杂度 \(O(\log n)\)

空间复杂度 \(O(1)\)

代码

#include <bits/stdc++.h>

using namespace std;

int f(long long n) {
if (n == 0 || n == 1) return n;
return f(n / 2) + f(n % 2);
} int main() {
int t;
cin >> t;
while (t--) {
long long n;
cin >> n;
int ans = f(n);
cout << ans << ' ' << ((1LL << ans) - 1) << '\n';
}
return 0;
}

NC15979 小q的数列的更多相关文章

  1. 平面直接坐标系线段相交问题(小Q(钟神)的问题)

    [问题描述] 小 Q 对计算几何有着浓厚的兴趣.他经常对着平面直角坐标系发呆,思考一些有趣的问题.今天,他想到了一个十分有意思的题目:首先,小 Q 会在?轴正半轴和?轴正半轴分别挑选?个点.随后,他将 ...

  2. hdu---(4515)小Q系列故事——世界上最遥远的距离(模拟题)

    小Q系列故事——世界上最遥远的距离 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)T ...

  3. HD4505小Q系列故事——电梯里的爱情

    Problem Description 细心的同事发现,小Q最近喜欢乘电梯上上下下,究其原因,也许只有小Q自己知道:在电梯里经常可以遇到他心中的女神HR. 电梯其实是个很暧昧的地方,只有在电梯里,小Q ...

  4. hdu4505小Q系列故事——电梯里的爱情

    小Q系列故事——电梯里的爱情 Time Limit: 300/100 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tota ...

  5. HDU-4515 小Q系列故事——世界上最遥远的距离

    小Q系列故事——世界上最遥远的距离 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) ...

  6. 2013腾讯编程马拉松初赛第二场(3月22日) 小Q系列故事——为什么时光不能倒流 ---好水!!

    我以为我会是最坚强的那一个 我还是高估了自己 我以为你会是最无情的那一个 还是我贬低了自己 就算不能够在一起 我还是为你担心 就算你可能听不清 也代表我的心意 那北极星的眼泪 闪过你曾经的眼角迷离 那 ...

  7. HDU4530:小Q系列故事——大笨钟

    Problem Description 饱尝情感苦恼的小Q本打算隐居一段时间,但仅仅在3月25号一天没有出现,就有很多朋友想念他,所以,他今天决定再出来一次,正式和大家做个告别. 小Q近来睡眠情况很差 ...

  8. 欢迎大家关注我的微信公众帐号小q机器人(xiaoqrobot)(转)

    一个偶然的机会让我接触到了微信公众平台,赶紧加了几个交流群了解下相关情况,突然间发现好像全部的APP开发人员都在研究微信公众帐号的开发,而我显得有些落舞了.至于为什么热度会这么高,我想一个数字足以说明 ...

  9. HDU 4520 小Q系列故事——最佳裁判

    Time Limit : 500/200ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Problem Description 过 ...

随机推荐

  1. Effective HPA:预测未来的弹性伸缩产品

    作者 胡启明,腾讯云专家工程师,专注 Kubernetes.降本增效等云原生领域,Crane 核心开发工程师,现负责成本优化开源项目 Crane 开源治理和弹性能力落地工作. 余宇飞,腾讯云专家工程师 ...

  2. WinForm中TextBox文本过长解决

    方案1: 如果界面有足够的空间 可以使用Multiline属性设置多行 方案2:  可以使用文本框的MouseHover事件,触发弹窗,缺点需要按确定 private void txt_Fnote_M ...

  3. input输入框自动填充的问题

    火狐浏览器打开页面,input可以自动填充历史输入值,现在想无论input类型是type='text'还是'password'都禁止自动填充,因为我写的页面在input='text'时先检查是否有输入 ...

  4. XCTF练习题---MISC---Excaliflag

    XCTF练习题---MISC---Excaliflag flag:3DS{Gr4b_Only_th1s_B1ts} 解题步骤: 1.观察题目,下载附件 2.拿到手以后是一张图片,话不多说,直接上Ste ...

  5. FreeRTOS --(14)队列管理之概述

    转载自 https://blog.csdn.net/zhoutaopower/article/details/107221175 在任何的 OS 中,都需要支持任务与任务,中断与任务之间的数据传输机制 ...

  6. ucore lab7 同步互斥机制 学习笔记

    管程的设计实在是精妙,初看的时候觉得非常奇怪,这混乱的进程切换怎么能保证同一时刻只有一个进程访问管程?理清之后大为赞叹,函数中途把前一个进程唤醒后立刻把自己挂起,完美切换.后一个进程又在巧妙的时机将自 ...

  7. Go语言学习——指针、new和make

    指针 Go语言中不存在指针操作,只需要记住两个符号: &:取地址 *:根据地址取值 vscode 打开多个标签页 settings.json中输入"workbench.editor. ...

  8. PyScript:让Python在HTML中运行

    大家好,我是DD,已经是封闭在家的第51天了! 最近一直在更新Java新特性和IDEA Tips两个专栏,其他方向内容的动态关注少了.昨天天晚上刷推的时候,瞄到了这个神奇的东西,觉得挺cool的,拿出 ...

  9. 重修 Slope Trick(看这篇绝对够!)

    Slope Trick 算法存在十余载了,但是我没有找到多少拍手叫好的讲解 blog,所以凭借本人粗拙的理解来写这篇文章. 本文除标明外所有图片均为本人手绘(若丑见谅),画图真的不容易啊 qwq(无耻 ...

  10. 使用Go实现健壮的内存型缓存

    使用Go实现健壮的内存型缓存 本文介绍了缓存的常见使用场景.选型以及注意点,比较有价值. 译自:Implementing robust in-memory cache with Go 内存型缓存是一种 ...