【 C++ 】 实现 异或运算 找到一堆数字中出现奇数次的数字

找到单个奇数个数字

一堆数字中,有奇数个a,其他数字都为偶数个,找到这个a

#include <iostream>
using namespace std;

int findOddNum(int* pArr, int len)
{
   
   
	int eor = 0;
	for( int i=0; i<len; i++ )
	{
   
   
		eor ^= pArr[i];
	}
	return eor;
}

int main(void)
{
   
   
	int arr
聚光灯突然打在舞台角落,那个常年穿着格子衫的程序员突然清了清嗓子:"咳咳,本世纪最憋屈配角奖得主——同学!你每天帮别人防溢出防爆int,自己却连个专属题目都没有。今天我们要给你定制个逆天改命的舞台!" 定义一个类别,称为 “类”。假设有一堆编号依次为 的小球,其中正整 表示小球的总量。 对于这 个小球中的每一个,我们设其编号为 (),计算 的值,其中 表示对 向下取整,也就是不超过 的最大整。 根据上述计算结果,将所有满足 的正整 和 ()所对应的小球归为同一类。也就是说,编号为 和 的小球,如果计算 和 的结果相同,那么这两个小球就属于同一类。 现在,对于输入的正整 (),需要计算出所有分类的总,然后对所有分类总个进行异或运算(采用异或运算的目的是为了避免输出量过多,从而防止在某些编程语言中出现超时的情况)。 注意,答案是所有分类总个异或,不是 ,今天 可是主角! 输入格式 第一行输入一个整 ()表示测试用例的量 第二行个整 (),表示小球的总量。 输出格式 输出行整,表示每个测试用例所有分类总个异或结果。 样例 输入 #1 4 3 4 9 16 输出 #1 1 0 1 0 #include<iostream> #include<unordered_map> using namespace std; const int n=1e9+7; int main() { int t; cin>>t; while(t--) { long long p; cin>>p; unordered_map<long long,int> type; for(long long i=1;i<=p;i++) { long long first=n/i; type[first]=1; } int sum=0; for(auto &[i,j]:type) { sum++; } if(sum%2==0) { cout<<0<<endl; } else { cout<<1<<endl; } } } 案例输出是对的,但提交之后是错的,怎么改更符合题意
最新发布
03-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入一下?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值