列表

详情


NC206864. Array

描述

二进制运算包含 '&','|','^','~'四种运算规则。
已知某数组中存在 N 个非负整数元素,N 个元素满足如下两种关系:
array[1] ^ array[2] ^ ··· ^ array[N - 1] ^ array[N] = x
array[1] + array[2] + ··· + array[N - 1] + array[N] = y
给定 x 和 y 的值,求 N 的最小值。

输入描述

多组输入,每组输入两个整数 x,y (0 ≤ x ≤ 1000,0 ≤ y ≤ 1000)

输出描述

对于每组输入,输出满足条件的数组的最小元素个数,如果不存在数组满足条件,则输出-1

示例1

输入:

0 0
1 1
2 4
1 3
2 3

输出:

0
1
2
3
-1

说明:

当 x = 0,y = 0 时,输出 0 即可
当 x = 1,y = 1 时,满足条件的最小元素个数是1,example:array = { 1 }
当 x = 2,y = 4 时,满足条件的最小元素个数是2,example:array = { 1,3 }
当 x = 1,y = 3 时,满足条件的最小元素个数是3,example:array = { 1,1,1 }
当 x = 2,y = 3 时,不存在数组满足条件

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++11(clang++ 3.9) 解法, 执行用时: 365ms, 内存消耗: 3064K, 提交时间: 2020-06-15 16:34:55

#include<bits/stdc++.h>
#define p(a) {puts(a);continue;}
int main(){
    int a,b;
    while(~scanf("%d%d",&a,&b)){
        if(a>b) p("-1");
        if(a==0&&b==0) p("0");
        if(a==b) p("1");
        int x=b-a;
        if(x&1) p("-1");
        if((x/2)&a) p("3");
        p("2");
    }
}

C++14(g++5.4) 解法, 执行用时: 172ms, 内存消耗: 3172K, 提交时间: 2020-06-14 23:06:09

#include<bits/stdc++.h>
#define p(a) {puts(a);continue;}
int main(){
	int a,b;
	while(~scanf("%d%d",&a,&b)){
		if(a>b) p("-1");
		if(a==0&&b==0) p("0");
		if(a==b) p("1");
		int x=b-a;
		if(x&1) p("-1");
		if((x/2)&a) p("3");
		p("2");
	}
}

Python3(3.5.2) 解法, 执行用时: 6683ms, 内存消耗: 13688K, 提交时间: 2020-06-18 21:20:27

while True:
	try:
		x, y = map(int, input().split())
		if x==y:
			print(0) if(x==0) else print(1)
		elif x>y:
			print(-1)
		elif (y-x)&1:
			print(-1)
		elif ((y+x)//2) ^ ((y-x)//2) == x:
			print(2)
		else:
			print(3)
	except:
		break;

上一题