NC25723. 矩形异或
描述
输入描述
第一行两个正整数 n, m
接下来 m 行每行四个正整数依次为 xl, yl, xr, yr
保证,
输出描述
m 行
每行一个正整数为所求的异或和
示例1
输入:
3 1 1 2 2 3
输出:
6
说明:
(2^3^3^4)==6C++11(clang++ 3.9) 解法, 执行用时: 235ms, 内存消耗: 10232K, 提交时间: 2020-03-21 14:01:08
#include <stdio.h> inline int g(int x){return (x&3)<2?((x>>1)&2)^x:((x>>1)&2)^2;} int main(){ int n,m,x1,y1,x2,y2; scanf("%d%d", &n, &m); for(int i=0;i<m;++i) { scanf("%d%d%d%d",&x1,&y1,&x2,&y2); printf("%d\n", g(x2+y2-1)^g(x1+y2-2)^g(x1+y1-3)^g(x2+y1-2)); } return 0; }
C++14(g++5.4) 解法, 执行用时: 190ms, 内存消耗: 2244K, 提交时间: 2019-07-10 14:16:26
#include <stdio.h> inline int f(int x){return ((x>>1)&2)^(x&2)^x^(((x>>1)&1)*x);} int main(){ int n,m,x1,y1,x2,y2; scanf("%d%d", &n, &m); while(m--){ scanf("%d%d%d%d",&x1,&y1,&x2,&y2); printf("%d\n", f(x2+y2-1)^f(x1+y2-2)^f(x1+y1-3)^f(x2+y1-2)); } return 0; }