长春理工大学第十四届程序设计竞赛F Successione di Fixoracci——找规律&&水题
题目
题意:给出x数列的定义:
- $T_0 = a$
- $T_1 = b$
- $T_n = T_{n-2} \bigoplus T_{n-1} $
求第 $n$ 项( $0 \leqslant a,b,c \leqslant 10^{18} $)
分析
$n$ 这么大,肯定是常数时间复杂度。
打表找规律,能发现循环节为3。
或者直接推导,$a \bigoplus b = c, \ b \bigoplus c = a, \ c \bigoplus a = b$
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll a, b, n; int main() { scanf("%lld%lld%lld", &a, &b, &n); ll c = a ^ b; ll ans; if(n % 3 == 0) ans = a; else if(n % 3 == 1) ans = b; else ans = c; printf("%lld\n", ans); return 0; }
个性签名:时间会解决一切