andyli

题解 CF1208A 【XORinacci】
我们先按照题目条件进行找规律: 可以发现对于任意一个$f(x)$都有$f(x)=f(x\% 3)$,所以只需...
扫描右侧二维码阅读全文
27
2019/08

题解 CF1208A 【XORinacci】

我们先按照题目条件进行找规律:
$$f(0)=a$$
$$f(1)=b$$
$$f(2)=f(0)\oplus f(1)=a\oplus b$$
$$f(3)=f(1)\oplus f(2)=b\oplus a\oplus b=a (\texttt{because}\ x\oplus x=0)$$
$$f(4)=f(2)\oplus f(3)=a\oplus b\oplus a=b$$
$$f(5)=f(3)\oplus f(4)=a\oplus b=f(2)$$

可以发现对于任意一个$f(x)$都有$f(x)=f(x\% 3)$,所以只需计算$f(0)$,$f(1)$及$f(2)$即可。
代码如下:

#include <cstdio>

int main()
{
    int T;
    scanf("%d", &T);
    while (T--) {
        int a, b, n;
        scanf("%d%d%d", &a, &b, &n);
        if (n % 3 == 0) // f(n)=f(0)
            printf("%d\n", a);
        if (n % 3 == 1) // f(n)=f(1)
            printf("%d\n", b);
        if (n % 3 == 2) // f(n)=f(2)
            printf("%d\n", a ^ b);
    }
    return 0;
}
Last modification:November 23rd, 2019 at 11:18 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment