NC206864. Array
描述
输入描述
多组输入,每组输入两个整数 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
说明:
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;