首页 > 其他分享 >我觉得一道难度挺大的题目

我觉得一道难度挺大的题目

时间:2024-03-17 18:04:16浏览次数:20  
标签:tmp sz arr 题目 int 挺大 pnum1 pnum2 难度

1.定义一个数组 求出其长度 ,将数组与长度 以及最后两个结果传入函数中去

int num1 = 0;
int num2 = 0;
int arr[] = { 1,2,3,4,5,1,2,3,4,6 };
int sz = sizeof arr / sizeof arr[0];
findnum(arr, sz, &num1, &num2);

                  2.将数组中所有元素异或起来

void findnum(int arr[], int sz, int* pnum1, int* pnum2)
{
	int tmp = 0;//1.将数组中所有元素异或起来
	for (int i = 0; i < sz; i++)
	{
		tmp ^= arr[i];
	}

3.找到tmp二进制中为1的位数为k

int k = 0;//2.找到tmp中,二进制位1的某一位k 
for (int j = 0; j < 32; j++)
{
	if ((tmp >> j) & 1 != 0)
	{
		k = j;
		break;
	}
}

4.遍历数组,把每一个数据 第k位上为1的分到一组 另外一个分到另外一组 分别进行异或 最终只值存到pnum1 pnum2中

*pnum1 = *pnum2 = 0;
//3.遍历数组,把每一个数据 第k位上为1的分到一组 另外一个分到另外一组 分别进行异或 最终只值存到pnum1 pnum12中
for (int i = 0; i < sz; i++)
{
	
	if ((arr[i] >> k)&1!=0)//第k位是一
	{
		*pnum1 ^= arr[i];
	}
	else
	{
		*pnum2 ^= arr[i];

	}
}

最后求出其结果

完整代码

void findnum(int arr[], int sz, int* pnum1, int* pnum2)
{
	int tmp = 0;//1.将数组中所有元素异或起来
	for (int i = 0; i < sz; i++)
	{
		tmp ^= arr[i];
	}

	int k = 0;//2.找到tmp中,二进制位1的某一位k 
	for (int j = 0; j < 32; j++)
	{
		if ((tmp >> j) & 1 != 0)
		{
			k = j;
			break;
		}
	}
	*pnum1 = *pnum2 = 0;
	//3.遍历数组,把每一个数据 第k位上为1的分到一组 另外一个分到另外一组 分别进行异或 最终只值存到pnum1 pnum12中
	for (int i = 0; i < sz; i++)
	{
		
		if ((arr[i] >> k)&1!=0)//第k位是一
		{
			*pnum1 ^= arr[i];
		}
		else
		{
			*pnum2 ^= arr[i];

		}
	}
}
int main()
{
	int num1 = 0;
	int num2 = 0;
	int arr[] = { 1,2,3,4,5,1,2,3,4,6 };
	int sz = sizeof arr / sizeof arr[0];
	findnum(arr, sz, &num1, &num2);
	printf("%d %d \n", num1, num2);
	return 0;
}

希望多多支持

标签:tmp,sz,arr,题目,int,挺大,pnum1,pnum2,难度
From: https://blog.csdn.net/2301_80548180/article/details/136785840

相关文章

  • 【Web】记录[长城杯 2022 高校组]b4bycoffee题目复现
    目录前言环境准备简单分析EXP前言本地jar包运行打通了,远程500,感觉靶机环境有问题,不纠结(主要记录下做题过程,纯菜狗,小白文环境准备这次附件给的jar包是可执行jar,不是可依赖jar,不能直接addaslib导入项目需要进行如下的处理先是对jar包进行解压用jadx-gui打开......
  • Linux 运维工程师面试真题-5-常考题目汇总
    Linux运维工程师面试真题-5-常考题目汇总1.解释下什么是GPL,GNU,自由软件?GPL:(通用公共许可证):一种授权,任何人有权取得、修改、重新发布自由软件的权力。GNU:(革奴计划):目标是创建一套完全自由、开放的的操作系统。自由软件:是一种可以不受限制地自由使用、复制、研究、修改和分......
  • 题目 2154: 取余运算
    题目描述:输入b,p,k的值,求b^pmodk的值。其中b,p,k×k为长整型数。解题思路:如果指数为奇数,那么结果乘以当前的底数,指数除以2(整除运算)。如果指数为偶数,那么底数变为原来底数的平方,指数除以2。代码:分治算法packagelanqiao;importjava.math.BigInteger;importjava.util......
  • Java题目-数组计算-中位数- 圆类的构造-时间计算-学生类设计
    第一题:数组计算题目描述:编写Java程序,计算两个整型数组的和、差、乘积、商的整数部分及大小关系。定义如下:和:两个数组对应元素的和,若元素缺失,则补0;差:第一个数组和第二个数组对应元素的差,若元素缺失,则补0;乘积:两个数组对应元素的积,若元素缺失,则计0;除:第一个数组元素除以第二......
  • 考研模拟面试-题目【攻略】
    考研模拟面试-题目【攻略】前言版权推荐考研模拟面试-题目前面的问题通用问题专业题数据结构计算机网络操作系统数据库网络安全手写题数据结构操作系统计算机网络代码题基础代码题其他代码题后面的问题补充题目最后前言2023-10-1912:00:57以下内容源自《考研模......
  • JVM工作原理与实战(四十三):JVM常见面试题目
    专栏导航JVM工作原理与实战RabbitMQ入门指南从零开始了解大数据目录专栏导航前言一、JVM常见面试题目1.什么是类加载器,有哪些常见的类加载器?2.什么是双亲委派机制,以及如何打破双亲委派机制?3.如何判断堆上的对象没有被引用?4.JVM中都有哪些引用类型?5.ThreadLoca......
  • C语言:洛谷数组题目(2)(冰雹猜想,校门外的树,旗鼓相当的对手)
    目录1.前言2.三则题目1.冰雹猜想1.题目描述2.输入格式3.输出格式4.题解2.校门外的树1.题目描述2.输入格式3.输出格式4.题解3.旗鼓相当的对手1.题目描述2.输入格式3.输出格式4.题解3.小结1.前言今天小蒟蒻继续为大家分享洛谷数组题单题解,一共三道题,希望大......
  • 信息学奥赛一本通题目解析:2086:【22CSPJ普及组】乘方(pow)
    2086:【22CSPJ普及组】乘方(pow)题目描述小文同学刚刚接触了信息学竞赛,有一天她遇到了这样一个题:给定正整数aaa和b......
  • 后端行情变了,差别真的挺大。。。
    大家好,我是R哥。最近,我发现后端行情变了,差别真的挺大。。。大家知道我在做「面试辅导」,年后也聊了不少小伙伴,了解了现在大多数程序员的普遍现状、痛点及诉求,也看了许多的形形色色的简历,真的太有感触了。先说两个很有对比性的例子:一位咨询的小伙伴:工作3年,月薪9k,这个工作经......
  • 《算法竞赛入门经典 第2版》 数学题目集
    例题10-1巨大的斐波那契数!(ColossalFibonacciNumbers!,UVa11582)巨大的斐波那契数!ColossalFibonacciNumbers!-洛谷例题10-2不爽的裁判(DisgruntledJudge,NWERC2008,UVa12169)不爽的裁判DisgruntledJudge-洛谷NOI数学学习相关书籍及视频等资料(不包......