yltx's blog

yltx's blog

Κοιτάζοντας πάνω στον έναστρο ουρανό, κάτω στη γη.

题解 CF1208A 【XORinacci】

posted on 2019-08-26 21:58:15 | under 题解 |

这个题其实是很简单的……

看到题面的第一眼:递推求数列? $n\le 10^9$ ?

恩估计是矩阵快速幂

但A应该不至于这样吧?

仔细一看,发现自己被出题人骗了

$$f[0]=a$$

$$f[1]=b$$

$$f[2]=axorb$$

$$f[3]=axorbxorb=a$$

$$f[4]=axorb$$

好的那么我们就知道了, $f[3]=f[0],f[4]=f[1],f[5]=f[2]...$ 读入的 $n$ 是假的,直接%= $3$ 就好。

代码:

#include<bits/stdc++.h>
using namespace std;
int t,a,b,n;
int main(){
    scanf("%d",&t);
    while(t--){
        scanf("%d%d%d",&a,&b,&n);n%=3;//读入,同时取模
        switch(n){
            case 0:printf("%d\n",a);break;
            case 1:printf("%d\n",b);break;
            default:printf("%d\n",a^b);break;//如上文的解法。
        }
    }
}