0
点赞
收藏
分享

微信扫一扫

【C语言】寻找两个‘单身狗’数

青鸾惊鸿 2022-03-30 阅读 111
c语言

问题描述

解题分析

 代码实现

#include<stdio.h>

void find_single_dog(int arr[], int sz)
{
	int dog1 = 0;
	int dog2 = 0;
	int num = 0;
	int i;
	for (i = 0; i < sz; i++)
	{
		num ^= arr[i];
	}
	for (i = 0; i < 32; i++)
	{
		if (((num >> i) & 1) == 1)
		{
			break;
		}
	}

	for (int j = 0; j < sz; j++)
	{
		if (((arr[j] >> i) & 1 )== 1)
		{
			dog1 ^= arr[j];
		}
	}
	dog2 = num ^ dog1;
	printf("%d %d",dog1, dog2);
}
int main()
{
	int arr[] = { 1,2,3,4,5,1,2,3,4,7 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	find_single_dog(arr, sz);

	return 0;
}
举报

相关推荐

0 条评论