小q的数列(c语言)

news2024/9/21 3:30:31

1./描述
//小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',以空格分隔

2.方法一:我们可以用递归数列进行加减,第一步,我们将数据存储在一维数组arr[]里面,然后进行调用。因为/f[0] = 0 f[1] = 1;  f[i] = f[i / 2] + f[i % 2]; (i >= 2),所以当i==1,f(i)==1,sum++,i==0,f(i)==0,就返回sum,然后进行相加,就可以得到sum,用sum=f(x/2)+f(x%2) 进行查找,因为x>n=1,所以i==1,就可以得到x.(注意:如果数据过大就可能溢出)

#include<stdio.h>
//方法一
int test2(int count)
{
	int c = 0;
	for (int x = 1;; x++)
	{
		if (count == test1(x / 2,c) + test1(x % 2,c))
		{
			return x;
		}

	}
}
int test1(long long  s,long long sum)
{
	long long a = 0;
	long long b = 0;
	if (s == 1)
	{
		sum = sum + 1;
		goto end;
	}
	if (s == 0)
	{
		goto end;
	}
	else 
	{
		 a = s / 2;
		 b = s % 2;
		 sum = test1(a, sum) + test1(b, sum);
	}
end:
	return sum;
		
}
int main()
{
	long long  t = 0;
	scanf_s("%lld", &t);
	long long  arr[10000] = { 0 };
	for (long long i = 0; i < t; i++)
	{
		scanf_s("%lld", &arr[i]);
	}
	for (long long j = 0; j< t; j++)
	{
		long long s = 0;
		if (arr[j] == 0)
		{
			printf("0 0\n");
		}
		else if (arr[j] == 1)
		{
			printf("1 1\n");
		}
		else
		{
			 s = arr[j];
			 long long  sum = 0;
			long long ret=test1(s, sum);
			long long n = test2(ret);
			printf("%lld %lld\n", ret,n);

		}
	}
	return 0;
}

2.方法二:

// 这题可以找规律,可以列出前几项看看,其实它是和n的二进制大小有关。
//n     f(n)    n'    n的二进制
//0      0        0       0
//1      1        1       1
//2      1        1       10
//​3      2        3       11
//​4      1        1       100
//​5      2        3       101
//​6      2        3       110
//​7      3        7        111
//​8      1        1       1000
//用a来表示n的二进制中1的个数,可以看出,f(n)的值与a相等,n'等于2 的a次方-1。
//
//f[0] = 0 f[1] = 1; f[i] = f[i / 2] + f[i % 2]; (i >= 2) 
// 其实这个式子就是不断把二进制的i右移一位,
// 再看一下i是不是奇数(二进制最后一位是不是1),
// 如果是就 + 1,那么任何数都能化成f[1] + X,X = i的二进制中1的个数 - 1。
// 最早出现的n'就是2的0次方一直加到2的X次方(2的a次方-1),
// 就是n'的二进制全是1,并且1的个数 = i的二进制中1的个数。

#include<stdio.h>
int main()
{
	long long t = 0;
	long long i = 0;
	long long n = 0;
	scanf("%lld", &t);
	long long sum = 0;
	long long num = 0;
	while (t--)
	{
		sum = 0;
		num = 0;
		scanf("%lld", &n);
		while (n)
		{
			if (n & 1)
			{
				sum++;
			}
			n = n >> 1;
		}
		for (i = 0; i < sum; i++)
		{
			num = num * 2 + 1;
		}
		printf("%lld %lld\n", sum, num);
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2086676.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

趣映 v2.3.8 — 高级版,专注动画制作,自媒体变现

趣映是一款专注于为动画垂直账号提供全面视频编辑和制作功能的软件&#xff0c;支持从灵感创作到成片输出的全流程。海量模板助您一键制作爆款动画视频和动漫视频&#xff0c;适配各种场景。此版本已解锁高级功能&#xff0c;提供更丰富的编辑工具和模板。 链接&#xff1a;ht…

MySQL数据库60道面试题 ( 附答案 )

2024的4月招聘季如此卷&#xff0c;没点真本事真技术&#xff0c;没点面试经验&#xff0c;不了解点职场套路&#xff0c;如何过五关斩六将&#xff1f; 找工作最重要的一步自然是面试&#xff0c;马上跳槽季&#xff0c;网上出现了各种面试题&#xff0c;一时会让人眼花缭乱&…

外排序之⽂件归并排序实现

外排序之⽂件归并排序实现 外排序介绍 外排序&#xff08;External sorting&#xff09;是指能够处理极⼤量数据的排序算法。通常来说&#xff0c;外排序处理的数据不能 ⼀次装⼊内存&#xff0c;只能放在读写较慢的外存储器(通常是硬盘)上。外排序通常采⽤的是⼀种“排序-归 …

Spring+SpringWeb+MyBatis三大框架整合教程 实现先前后端交互搭建

目录 1. 创建项目 2. 导入所依赖的 jar 包 3. 配置MyBatis 4. 配置spring事务管理 5. 配置Spring * Spring配置代码解读 6. dao层 7. mappers映射文件 8. common层 9. service层 10. web层 11. 测试 ssm大合体&#xff01; 1. 创建项目 &#x1f4cd;创建一个J…

【C++ Primer Plus习题】6.7

问题: 解答: #include <iostream> #include <cctype> using namespace std;int main() {string words;int vowel 0;int consonant 0;int other0;cout << "请输入一个单词(q结束):";cin >> words;while (words!"q"){if (!isalph…

编成笔记-atan2函数学习分析

分析atan2函数 1. 前言 2. atan2函数分析 tanθy/x : 当(x,y) 在第一象限&#xff0c;0 < θ < π/2当(x,y) 在第二象限&#xff0c;π/2 < θ ≤ π当(x,y) 在第三象限&#xff0c;− π < θ < − π/2当(x,y) 在第四象限&#xff0c;− π/2 < θ <…

动态读取nacos中修改的项目配置文件

本项目用的还是springboot项目&#xff0c;咱们直接上代码 一&#xff1a;首先看下nacos中需要动态获取的属性 二&#xff1a;把需要动态读取的配置类中的属性整理一个实体类 mport lombok.Data; import org.springframework.boot.context.properties.ConfigurationPropert…

微信公众号等工具 3 — 使用 Markdown Nice 写文章

文章目录 操作步骤STEP 1. 进入微信公众号文章编辑界面STEP 2. Markdown Nice 将 3 个重要的功能嵌入到了微信公众号编辑器中STEP 3. 在 Markdown Nice 界面编辑内容STEP 4. 导入/粘贴/直接在编辑器中编辑 Markdown → 点击左下角的预览效果 操作步骤 STEP 1. 进入微信公众号文…

BUUCTF二维码1

九张撕碎二维码碎片。不会让人拼起来吧&#xff01;看了大神们得博客竟然是真的&#xff0c;这是ctf的题吗&#xff01;是考验人的耐性吧&#xff01; 我勉为其难讲一下PS怎么拼图&#xff0c;首先要把九张碎片抠图&#xff0c;背景变透明&#xff0c;ps可以但是太麻烦&#xf…

(亲测有效)spring cloud+Vue微服务项目云服务器部署(宝塔)

我的另一篇博客&#xff0c;有兴趣可以看看&#xff0c;部署思路都是一样的。 &#xff08;亲测有效&#xff09;SpringBootVue项目云服务器部署&#xff08;宝塔&#xff09;_springboot 宝塔部署-CSDN博客 目录 一、准备工作 购买云服务器 登录云服务器 安装宝塔 二、jdk…

项目技巧二

java中Date和mysql数据库datetime数据类型 数据库中的 datetime 类型&#xff1a; 大多数关系型数据库&#xff08;如 MySQL, SQL Server, PostgreSQL 等&#xff09;都提供了 datetime 类型&#xff0c;用于存储日期和时间信息。这些数据库中的 datetime 类型通常遵循 ISO 86…

金九银十跳槽季,最新自动化测试面试题合集

前言 Hello,大家好。金九银十也不远了&#xff0c;有的人盼望升职加薪&#xff0c;有的人立了新的Flag&#xff0c;有跳槽计划的该提上日程了。为解大伙的燃眉之急&#xff0c;今天分享自动化面试题预热一波&#xff0c;欢迎留言区补充评论&#xff01; 一、请描述一下自动化测…

sqli-labs靶场通关攻略(四十一到五十关)

sqli-labs-master靶场第四十一关 一&#xff0c;查看数据库 ?id-1 union select 1,2,database()-- 二&#xff0c;查看表名 ?id-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schemadatabase()-- 三&#xff0c;查看users表中…

python学习之路 - python对mysql的数据操作

目录 一、python对mysql的数据操作1、前期准备2、连接mysql3、创建表5、插入表4、查询表 一、python对mysql的数据操作 1、前期准备 使用python对mysql进行相关操作前&#xff0c;需要安装pymysql。执行pip install pymysql命令即可如果具体不知道如何操作&#xff0c;可以查…

导入pyBigWig包

今天复现论文时&#xff0c;看到了一种叫做bigwig格式的数据&#xff0c;创建和访问该格式文件需要用到pybigwig包&#xff0c;在此过程中遇到了一些问题&#xff0c;记录一下。 介绍 pybigwig的使用依赖于两个C库&#xff0c;所谓C库就是C语言编写的python库。 正如在pypi官…

聚类算法-DBSCAN

文章目录 一、DBSCAN介绍1.含义2.DBSCAN 的核心概念3.DBSCAN算法参数 二、代码实现1.数据预处理2.DBSCAN聚类3.计算轮廓系数4.全部代码 三、总结 一、DBSCAN介绍 1.含义 DBSCAN&#xff08;Density-Based Spatial Clustering of Applications with Noise&#xff09;是一种基…

llama-cpp-python编译失败,解决方案安装wheel文件

https://abetlen.github.io/llama-cpp-python/whl/cu121/llama-cpp-python/编译失败&#xff1a; 解决方案&#xff1a;使用轮子镜像

Clion/Vs中wcout输出中文不显示的解决办法

本来要写个输出所有窗口的代码&#xff0c;但是结果文字一直不输出&#xff0c;又试了试发现只是汉字不输出&#xff1a; #include <windows.h> #include <iostream> #include <vector> #include <string>std::vector<std::wstring> windowTitl…

数据结构(6.4_4)——Floyd算法

Floyd算法 第一步&#xff1a;建立两个二维数组&#xff0c;一个用来存放所有顶点&#xff0c;一个用来存放顶点之间的中转点 第二步&#xff1a;循环遍历A矩阵&#xff0c;若,则&#xff0c;&#xff1b;否则 和保持原值&#xff0c;循环完所有i&#xff0c;j后更新数组并且…

材料表面缺陷检测系统源码分享 # [一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

材料表面缺陷检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…