请问这段代码问题在哪?为什么错了
  • 板块灌水区
  • 楼主chenzheyu
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/10/2 15:48
  • 上次更新2023/11/2 16:33:33
查看原帖
请问这段代码问题在哪?为什么错了
487611
chenzheyu楼主2023/10/2 15:48

题目描述

小C喜欢异或,他有一天突然在思考一个问题。

他构造了一个无穷多的数组a ,其中第一个元素a1=1,第二个元素a2=1^2,...,第i个元素ai= 1^2^...^i...

其中"^"表示二进制异或运算。 他想知道在1~n的所有整数中,有多少整数不在数组a中。

输入格式

一行一个整数n。 输出格式

输出一个数表示答案。

输入样例

2

输出样例

1

说明:

a1=1,a2=3,a3=0,a4=4...

1<=n<=10^18

代码:

#include <bits/stdc++.h>
using namespace std;
long long n,a[4];
long long yh(long long x,long long y){
	return x ^ y;
}
int main(){
	cin>>n;
	a[1]=0;
	a[2]=a[3]=a[4]=1;
	if(n<=4) cout<<a[n];
	else{
		for(int i=1;i<=4;i++) a[i]+=2*((n-1)/4);
		if(n%4==0) cout<<a[4];
		else cout<<a[n%4];
	}
	return 0;
}

2023/10/2 15:48
加载中...