网课:第三章递归与分治思想---小q的数列

ops/2024/10/22 16:25:06/

题目描述

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

f[0]=0 f[1]=1;
f[i]=f[i/2]+f[i%2];(i>=2)

现在,他想考考你,问:给你一个n,代表数列的第n项,你能不能马上说出f[n]的值是多少,以及f[n]所代表的值第一次出现在数列的哪一项中?(这里的意思是:可以发现这个数列里某几项的值是可能相等的,则存在这样一个关系f[n'] = f[n] = f[x/2]+f[x%2] = f[x]...(n'<n<x) 他们的值都相等,这里需要你输出最小的那个n'的值)(n<10^18)

输入描述:

输入第一行一个t
随后t行,每行一个数n,代表你需要求数列的第n项,和相应的n'
(t<4*10^5)

输出描述:

输出每行两个正整数
f[n]和n',以空格分隔

示例1

输入

2
0
1

输出

0 0
1 1

做法

求f(n)就是正常递归,但是要注意,这题卡常数了,就是f(n%2)要直接求出来,不能再递归下去。

接下来的问题就是怎么求它值相同的最小项呢,我们发现,f(n)的含义就是十进制n转为二进制时1的个数。那么最小项对应的二进制就是f(n)个1,而最小项对应的十进制怎么求,就是2的f(n)次方-1,也就是1左移f(n)位-1。

#include<bits/stdc++.h>
using namespace std;
int t;
int f(long long n){if(n==0) return 0;if(n==1) return 1;if (n%2==0) return f(n/2);else return f(n/2)+1;
}
int main(){scanf("%d",&t);while(t--){long long k;scanf("%lld",&k);int ans=f(k);cout<<ans<<" ";long long res=(1LL << ans)-1;//1要强制转换为long long,不然移动后超过32位会爆cout<<res<<endl;}
}


http://www.ppmy.cn/ops/39827.html

相关文章

Mac安装Photoshop2024 For Macv25.7.0 ps2024中文激活版

资源介绍 支持&#xff1a;mac系统/M/INTEL芯 Adobe Photoshop for mac是由Adobe专业为mac系统开发和发行的图像处理软件。Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具&#xff0c;可以有效地进行图片编辑和创造工作。PS有很多功能&#xff0c;在图…

macOS DOSBox 汇编环境搭建

正文 一、安装DOSBox 首先前往DOSBox的官网下载并安装最新版本的DOSBox。 二、下载必备的工具包 在用户目录下新建一个文件夹&#xff0c;比如 dosbox: mkdir dosbox然后下载一些常用的工具。下载好了后&#xff0c;将这些工具解压&#xff0c;重新放在 dosbox 这个文件夹…

对Promise的理解

Promise的含义 Promise是ES6引入的JS中进行异步编程的新解决方案。 它是一个对象&#xff0c; 可以获取异步操作的消息&#xff0c; 它的出现大大改善了异步编程的困境&#xff0c; 避免了地狱回调&#xff0c;它比传统的解决方案回调函数和事件更合理和更强大。 Promise的实…

以Ubuntu 18.04为例,介绍如何通过GUI安装Vmware Tools

正文共&#xff1a;1024 字 15 图&#xff0c;预估阅读时间&#xff1a;1 分钟 我前面已经在我的VMware ESXi主机上装了上百台虚拟机了&#xff0c;系统涉及的面也算得上非常广了&#xff0c;包括Windows系列&#xff08;Windows 7&#xff08;VMware虚拟机部署&#xff08;Win…

下载后端返回的二进制文件

目录 一、问题 二、解决方法 三、总结 tiips:如嫌繁琐&#xff0c;直接移步总结即可&#xff01; 一、问题 1.需要导出功能&#xff0c;后端已经返回了二进制文件&#xff0c;前端如何下载呢&#xff1f; 二、解决方法 1.数据类型转换&#xff1a;将后端的二进制数据转换…

5.神经网络-激活函数

目录 1. 激活函数不是阶跃函数 1.1 激活函数和阶跃函数都是非线性函数 1.2 激活函数不是阶跃函数 2. sigmoid 函数 2.1 sigmoid 函数表达式 2.2 sigmoid 函数 Python 实现 2.4 sigmoid 函数图 3. ReLU 函数 3.1 ReLU 函数表达式 3.2 ReLU 函数 Python 实现 3.4 ReLU…

HDFS HA 修改nameservice

本例中修改将原来的hdfs-ha 修改为 hdfs-ns 停止HDFS, 防止新的业务操作 等待停止结束 KDE中需要调整的配置项如下图所示 a.搜索栏找到fs.defaultFS&#xff0c;将hdfs://hdfs-ha改为hdfs://hdfs-ns b.搜索栏找到dfs.nameservices&#xff0c;将hdfs-ha改为hdfs-ns c.搜索栏找…

什么是IP跳变?

IP 跳跃&#xff08;也称为 IP 跳动&#xff09;的概念已引起使用代理访问网站的用户的极大关注。但 IP 跳跃到底是什么&#xff1f;为什么它对于各种在线活动至关重要&#xff1f; 在本文中&#xff0c;我们将深入探讨 IP 跳跃的世界&#xff0c;探索其实际应用、用例、潜在问…