博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
The 2019 Asia Nanchang First Round Online Programming Contest The Nth Item
阅读量:5337 次
发布时间:2019-06-15

本文共 1601 字,大约阅读时间需要 5 分钟。

思路:
先用特征根法求出通向公式,然后通向公式中出现了\(\sqrt{17}\),这个可以用二次剩余求出来,然后可以O(\(log(n)\))求出。
但是还不够,我们先对\(n\)欧拉降幂,然后求base为\(\sqrt{1e9}\)的快速幂,预处理一些东西,就可以类似O(1)求出了。
代码:

#pragma GCC optimize(2)#pragma GCC optimize(3)#pragma GCC optimize(4)#include
using namespace std;#define y1 y11#define fi first#define se second#define pi acos(-1.0)#define LL long long//#define mp make_pair#define pb push_back#define ls rt<<1, l, m#define rs rt<<1|1, m+1, r#define ULL unsigned LL#define pll pair
#define pli pair
#define pii pair
#define piii pair
#define pdd pair
#define mem(a, b) memset(a, b, sizeof(a))#define debug(x) cerr << #x << " = " << x << "\n";#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);//headconst int MOD = 998244353;const LL fsqrt17 = 473844410;const LL sqrt17 = MOD-fsqrt17;const LL inv2 = (MOD+1)/2;const LL invsqrt17 = 438914993;const int N = 4e4 + 5;LL p[N], pp[N], P[N], PP[N], q, n;LL f(LL n) { return (p[n%(N-1)]*P[n/(N-1)])%MOD;}LL F(LL n) { return (pp[n%(N-1)]*PP[n/(N-1)])%MOD;}int main() { p[0] = pp[0] = 1; for (int i = 1; i < N; ++i) p[i] = p[i-1]*(3+sqrt17)%MOD*inv2%MOD, pp[i] = pp[i-1]*(3+fsqrt17)%MOD*inv2%MOD; P[0] = PP[0] = 1; for (int i = 1; i < N; ++i) { P[i] = P[i-1]*p[N-1]%MOD; PP[i] = PP[i-1]*pp[N-1]%MOD; } scanf("%lld %lld", &q, &n); LL res = 0; for (int i = 1; i <= q; ++i) { LL ans = -(f(n%(MOD-1))-F(n%(MOD-1)))*invsqrt17%MOD; ans = (ans + MOD) % MOD; res ^= ans; n ^= ans*ans; } printf("%lld\n", res); return 0;}

转载于:https://www.cnblogs.com/widsom/p/11520233.html

你可能感兴趣的文章
Django之Models
查看>>
CSS 透明度级别 及 背景透明
查看>>
Linux 的 date 日期的使用
查看>>
PHP zip压缩文件及解压
查看>>
SOAP web service用AFNetWorking实现请求
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>
Python环境搭建(安装、验证与卸载)
查看>>
一个.NET通用JSON解析/构建类的实现(c#)
查看>>
Windows Phone开发(5):室内装修 转:http://blog.csdn.net/tcjiaan/article/details/7269014
查看>>
详谈js面向对象 javascript oop,持续更新
查看>>
关于这次软件以及pda终端的培训
查看>>
jQuery上传插件Uploadify 3.2在.NET下的详细例子
查看>>
如何辨别一个程序员的水平高低?是靠发量吗?
查看>>
新手村之循环!循环!循环!
查看>>
正则表达式的用法
查看>>
线程安全问题
查看>>
SSM集成activiti6.0错误集锦(一)
查看>>
下拉刷新
查看>>
linux的子进程调用exec( )系列函数
查看>>