HDU-5895 Mathematician QSC

题目大意:

已知f[0] = 0, f[1] = 1, f[i] = f[i-1] * 2 + f[i-2],且g[n] = g[n-1] + f[n] * f[n],现在给出n,y,x,s,问你x^(g[n*y]) mod (s + 1)的值为多少。

解题思路:

首先可以得到的是g[n] = f[n] * f[n+1] / 2

证明方式就是xjb打表加上猜加上数学归纳法,别问我怎么猜到的我是用了这个网站http://oeis.org/

因此g[n]可以很轻松的得到了。那么现在的问题就是a^b mod p的值应该怎么求

这里提供一份关于求解这个值的非常详细的博客:传送门

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;typedef long long LL;
typedef pair<LL, LL> pi;LL euler(LL n) {LL ans = n;for (LL i = 2; i * i <= n; ++i) {if (n % i == 0) {ans -= ans / i;while (n % i == 0)n /= i;}}if (n > 1) ans -= ans / n;return ans;
}
LL fastMul(LL a, LL b, LL mod) {LL ans = 1;while (b) {if (b & 1) ans = (ans * a) % mod;b >>= 1;a = (a * a) % mod;}return ans;
}
pi fastMatrix(LL n, LL mod) {LL t11, t12, t21, t22;LL bas[4] = {2, 1, 1, 0};LL ans[4] = {1, 0, 0, 1};while (n) {if (n & 1) {t11 = ((ans[0] * bas[0]) % mod + (ans[1] * bas[2]) % mod) % mod;t12 = ((ans[0] * bas[1]) % mod + (ans[1] * bas[3]) % mod) % mod;t21 = ((ans[2] * bas[0]) % mod + (ans[3] * bas[2]) % mod) % mod;t22 = ((ans[2] * bas[1]) % mod + (ans[3] * bas[3]) % mod) % mod;ans[0] = t11; ans[1] = t12; ans[2] = t21; ans[3] = t22;}n >>= 1;t11 = ((bas[0] * bas[0]) % mod + (bas[1] * bas[2]) % mod) % mod;t12 = ((bas[0] * bas[1]) % mod + (bas[1] * bas[3]) % mod) % mod;t21 = ((bas[2] * bas[0]) % mod + (bas[3] * bas[2]) % mod) % mod;t22 = ((bas[2] * bas[1]) % mod + (bas[3] * bas[3]) % mod) % mod;bas[0] = t11; bas[1] = t12; bas[2] = t21; bas[3] = t22;}return make_pair(ans[0], ans[2]);
}
LL solve(LL n, LL y, LL x, LL s) {LL eul = euler(s + 1);pi tmp = fastMatrix(n * y, eul * 2);LL N = ((tmp.first * tmp.second) % (eul * 2)) / 2 + eul;return fastMul(x, N, s + 1);
}
int main() {LL n, y, x, s, t;scanf("%lld", &t);while (t--) {scanf("%lld%lld%lld%lld", &n, &y, &x, &s);printf("%lld\n", solve(n, y, x, s));}return 0;
}


转载于:https://www.cnblogs.com/wiklvrain/p/8179351.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#的两种类据类型:值类型和引用类型

目录什么是值类型&#xff0c;什么是引用类型概念&#xff1a;值类型和引用类型区别什么是值类型&#xff0c;什么是引用类型 概念&#xff1a; 值类型直接存储其值&#xff0c;而引用类型存储对其值的引用。部署&#xff1a;托管堆上部署了所有引用类型。 引用类型&#xf…

ring0 ring3 kernel driver

intel cpu的权限访问控制&#xff1a;ring0 ~ ring5. window、linux操作系统都只用了ring0&#xff0c;ring3&#xff0c;对应内核态和用户态. 驱动程序工作在内核态&#xff0c;没有main函数入口&#xff0c;而应用程序工作在用户态。转载于:https://www.cnblogs.com/yiii/p/6…

Linux 的多线程编程的高效开发经验

转自&#xff1a;http://www.chineselinuxuniversity.net/articles/22615.shtml 本文中我们针对 Linux 上多线程编程的主要特性总结出 5 条经验&#xff0c;用以改善 Linux 多线程编程的习惯和避免其中的开发陷阱。在本文中&#xff0c;我们穿插一些 Windows 的编程用例用以对…

Visual C++中error spawning cl.exe解决办法

| 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 今天安装Vc6.0的时候出现了一个error spawning cl.exe的错误&#xff0c;在网上找了一些资料&#xff0c;才知道这是因为路径设置的问题引起的&#xff0c; “cl.exe”是VC真正的程序编译器&…

C#整数数据类型

文章目录博主写作不容易&#xff0c;孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 数据类型含义取值范围sbyte有符号8位整数-128 ~ 127&#xff08;-2^7 ~ 2^7-1&#xff09;byte无符号8位整数0 ~ 255&#xff08;0 ~ 2^8-1&#xff09;short有符号16位整数-32768 ~ 3…

HEXA机器人荣获CES Asia2018 创新奖

2019独角兽企业重金招聘Python工程师标准>>> 6月13日至15日&#xff0c;亚洲消费电子展CES Asia 2018将在上海新国际博览中心如期举行。在活动到来前&#xff0c;美国消费技术协会&#xff08;CTA&#xff09;于5月24日&#xff0c;提前揭晓了“2018亚洲消费电子展创…

【bzoj3994】[SDOI2015]约数个数和 莫比乌斯反演

题目描述 设d(x)为x的约数个数&#xff0c;给定N、M&#xff0c;求 输入 输入文件包含多组测试数据。 第一行&#xff0c;一个整数T&#xff0c;表示测试数据的组数。接下来的T行&#xff0c;每行两个整数N、M。输出 T行&#xff0c;每行一个整数&#xff0c;表示你所求的答案…

Linux根文件系统结构再认识

Linux根文件系统结构再认识刘建文&#xff08;http://blog.csdn.net/keminlau &#xff09; INTRO 尽管Linux的根文件系统在形式表现上是一体的&#xff08;所有数据目录均为根目录下的子目录&#xff09;&#xff0c;但实际它们是多个不同的【逻辑主体】&#xff08;为了实现…

C#浮点数据类型

文章目录博主写作不容易&#xff0c;孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 数据类型含义取值范围有效数字位数float32位浮点数1.5X10^-45 ~ 3.4X10^387double64位浮点数5.0X10^-324 ~ 1.7X10^30815 ~ 16 注意&#xff1a; 浮点数有一定的取值范围和有效数字限制…

在Window10上使用Ubuntu终端

在Windows10上使用Ubuntu终端 习惯了ubuntu的开发&#xff0c;回到windows的command可以说是很绝望了。之前偶尔用windows时一直用git-bash来代替。但是发现windows已经添加了对ubuntu子系统的支持&#xff0c;那直接用不是更爽。 1.安装 进入控制面板&#xff0c;开启适用于Li…

httpClient实现微信公众号消息群发

1、实现功能  向关注了微信公众号的微信用户群发消息。&#xff08;可以是所有的用户&#xff0c;也可以是提供了微信openid的微信用户集合&#xff09; 2、基本步骤 前提&#xff1a; 已经有认证的公众号或者测试公众账号 发送消息步骤&#xff1a; 发送一个请求微信去获取ac…

为静态博客生成器WDTP移植了一款美美哒主题

前言 关于这个主题的移植后公布&#xff0c;我已经联系了主题作者并取得同意&#xff0c;这个主题是一夜涕所写的Sgreen&#xff0c;预览图见下 关于WDTP 就是一个很方便很便携很快速的cpp编写的带gui跨平台的开源的静态博客生成器&#xff0c;软件作者更新记录在V站可以找到,软…

TCP/IP数据包结构分析

一般来说&#xff0c;网络编程我们只需要调用一些封装好的函数或者组件就能完成大部分的工作&#xff0c;但是一些特殊的情况下&#xff0c;就需要深入的理解 网络数据包的结构&#xff0c;以及协议分析。如&#xff1a;网络监控&#xff0c;故障排查等…… IP包是不安全的&am…

C#decimal数据类型

文章目录博主写作不容易&#xff0c;孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 为适应高精度的财务和货币计算的需要&#xff0c;C#提供了十进制decimal类型。decimal类型数据特征如下表所示&#xff1a; 数据类型含义取值范围有效数字位数decimal128位高精度十进制…

世界杯快到了,看我用Python爬虫实现(伪)球迷速成!

还有4天就世界杯了&#xff0c;作为一个资深&#xff08;伪&#xff09;球迷&#xff0c;必须要实时关注世界杯相关新闻&#xff0c;了解各个球队动态&#xff0c;这样才能在一堆球迷中如&#xff08;大&#xff09;鱼&#xff08;吹&#xff09;得&#xff08;特&#xff09;水…

Bootstrap学习笔记(四)-----Bootstrap每天必学之表单

本文主要讲解的是表单&#xff0c;这个其实对于做过网站的人来说&#xff0c;并不陌生&#xff0c;而且可以说是最为常用的提交数据的Form表单。本文主要来讲解一下内容&#xff1a; 1.基本案例2.内联表单3.水平排列的表单4.被支持的控件5.静态控件6.控件状态7.控件尺寸8.帮助文…

LVS--NAT模型配置

环境准备 管理IP地址角色备注192.168.11.131调度器&#xff08;Director&#xff09;对外提供VIP服务的地址为192.168.1.114192.168.11.132RS1 网关为192.168.11.131192.168.11.129RS2 网关为192.168.11.131将Directory开启内核转发 Linux系统默认是禁止数据包转发的。所谓转发…

STL中list的使用(理论)

STL中的list就是一双向链表&#xff0c;可高效地进行插入删除元素。现总结一下它的操作。文中所用到两个list对象c1,c2分别有元素c1(10,20,30) c2(40,50,60)。还有一个list<int>::iterator citer用来指向c1或c2元素。list对象的声明构造()&#xff1a;A. list<in…

C#数据类型转换—使用Convert类转换

文章目录简介用例博主写作不容易&#xff0c;孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 简介 System.Covert类就是专门进行类型转换的类&#xff0c;Convert类提供的方法可以实现各种进本数据类型之间的转换。Convert类的常用方法如下表&#xff1a; 方法说明ToBo…

服务器租用单线、双线、bgp 相比有哪些区别优势?

2019独角兽企业重金招聘Python工程师标准>>> 在IDC行业中&#xff0c;服务器的稳定性、安全性是考核服务商的主要指标&#xff0c;影响这两个指标的因素有很多&#xff0c;其中比较重要的有三个&#xff0c;分别是服务器的配置、机房骨干网宽带和机房的线路。我们常…