给定a,b,c.求fib(a ^ b) % c
显然a ^ b 非常大,而且直接fib(a ^ b)是行不通的
1.首先在 1 ~ n * n 之间 算出 fib[i],在判断 fib[i] == fib[1] && fib[i - 1] == fib[0]
,如果符合条件。那 么i - 1 就是fib数列的周期。(为什么只要判断前两项就可以知道后面是重复的呢??因为fib[i]只与前面的两项有关,那么前面两项确定以后,整个的后面就确定了).其中该fib数列的周期为 i - 1;
2.利用gcd(a % (i - 1),b,i - 1)算出a ^ b是在fib数列的第几项,(注意一定要mod一下,不然会 wa)。结果为fib[gcd(a % (i - 1),b,i - 1)]
3.注意特判一下 if(a == 0 || c == 1)res = 0;
本文发布于:2024-01-29 06:22:09,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170648053213322.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |