HDU 3802Ipad,IPhone
前两块可以看成是不是二次剩余,快速幂计算即可。
后半部分可以看成x1=a+b+2ab,x2=a+b-2ab为特征方程x^2-px-qx=0的两根
然后可以通过韦达定理求出p和q,因此递推式为A(n+2)=pA(n+1)+qA(n)
还要用费马小定理化简一下斐波那契数。
矩阵快速幂即可求。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll mod;
struct Max
{
ll a[][];int n,m;
Max(){n=m=;memset(a,,sizeof(a));};
Max operator *(const Max &b)const{
Max c;c.n=n;c.m=b.m;
for(int k=;k<m;++k)
for(int i=;i<n;++i)
for(int j=;j<b.m;++j)
c.a[i][j]=(c.a[i][j]+a[i][k]*b.a[k][j]%mod)%mod;
return c;
}
};
ll qmod(ll n,ll m,ll p)
{
ll ans=;
while(m)
{
if(m&)ans=ans*n%p;
n=n*n%p;m>>=;
}
return ans;
}
Max Qmod(Max a,ll b)
{
Max ans;ans.n=a.n;ans.m=a.m;
ans.a[][]=ans.a[][]=;
while(b)
{
if(b&)ans=ans*a;
a=a*a;b>>=;
}
return ans;
}
ll calc(ll a,ll b,ll n,ll p)
{
mod=p-;
Max f;f.n=f.m=;
f.a[][]=;f.a[][]=;
f.a[][]=;f.a[][]=;
f=Qmod(f,n);
mod=p;
int k=f.a[][];
Max z;z.n=z.m=;
z.a[][]=*(a+b)%mod;z.a[][]=-(a-b)*(a-b)%mod;
z.a[][]=;z.a[][]=;
z=Qmod(z,k-);
Max ans;ans.n=,ans.m=;
ans.a[][]=,ans.a[][]=*(a+b)%mod;
ans=ans*z;
return (ans.a[][]+mod)%mod;
}
int main()
{
int T;ll a,b,n,p;
scanf("%d",&T);
while(T--)
{
scanf("%lld%lld%lld%lld",&a,&b,&n,&p);
int tmp1=qmod(a,(p-)/,p);
int tmp2=qmod(b,(p-)/,p);
if(tmp1==-||tmp2==-)
{
puts("");continue;
}tmp1++;tmp2++;
printf("%lld\n",tmp1%p*tmp2%p*calc(a,b,n,p)%p);
}
return ;
}
HDU 3802Ipad,IPhone的更多相关文章
- HDU 3802 Ipad,IPhone
http://wutyyzchangde.blog.163.com/blog/static/172226566201132311311374/ #include <cstdio> type ...
- HDU 5007 Post Robot KMP (ICPC西安赛区网络预选赛 1001)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5007 解题报告:输入一篇文章,从头开始,当遇到 “Apple”, “iPhone”, “iPod”, ...
- 数据结构(主席树):HDU 4729 An Easy Problem for Elfness
An Easy Problem for Elfness Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 65535/65535 K (J ...
- HDU题解索引
HDU 1000 A + B Problem I/O HDU 1001 Sum Problem 数学 HDU 1002 A + B Problem II 高精度加法 HDU 1003 Maxsu ...
- hdu 5007 水 弦
http://acm.hdu.edu.cn/showproblem.php?pid=5007 纯粹的联系String的substr 什么时候substr拦截比写短话 string te; int n; ...
- hdu 5007
http://acm.hdu.edu.cn/showproblem.php?pid=5007 字符串处理 暴力 #include <cstdio> #include <cstdlib ...
- iPhone Anywehre虚拟定位提示“后台服务未启动,请重新安装应用后使用”的解决方法
问题描述: iPhone越狱了,之后在Cydia中安装Anywhere虚拟定位,但是打开app提示:后台服务未启动,请重新安装应用后使用. 程序无法正常使用... 解决方法: 打开Cydia-已安装, ...
- input标签中button在iPhone中圆角的问题
1.问题 使用H5编写微信页面时,使用<input type="button"/>时,在Android手机中显示正常,但是在iPhone手机中则显示不正常,显示为圆角样 ...
- iOS获取iPhone系统等信息和服务器返回空的异常处理
前言: 在项目中经常会遇到需要获取系统的信息来处理一些特殊的需求和服务端返回为空的处理,写在这里只是笔记一下. 获取设备的信息 NSLog(@"globallyUniqueString=%@ ...
随机推荐
- Python远程连接模块-Telnet
Python远程连接模块-Telnet 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 虽然现在主流的python版本还是2.7,相信2020年python程序员都会偏向Python ...
- Python中的列表解析和生成器表达式
Python中的列表解析和生成器表达式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.列表解析案例 #!/usr/bin/env python #_*_coding:utf-8 ...
- Linux makefile讲解
博客不会讲解的太细致深入,推荐先看视频再看博客 视频链接,推荐去B站观看,B站比较清晰... 土豆网:http://www.tudou.com/programs/view/19VZ0f3b_I0 B站 ...
- SQL记录-PLSQL函数
PL/SQL函数 PL/SQL函数与过程相同,不同之处在于函数有一个返回值.因此,前面的章节中的所有讨论都适用于函数. 创建函数 建立一个独立函数可以使用CREATE FUNCTION语句创建.CRE ...
- 【前端安全】JavaScript防XSS攻击
什么是XSS XSS(Cross Site Scripting),跨站脚本攻击,是一种允许攻击者在另外一个用户的浏览器中执行恶意代码脚本的脚本注入式攻击.本来缩小应该是CSS,但为了和层叠样式(Cas ...
- 【DS】排序算法之插入排序(Insertion Sort)
一.算法思想 一般来说,插入排序都采用in-place在数组上实现.具体算法描述如下:1)从第一个元素开始,该元素可以认为已经被排序2)取出下一个元素,在已经排序的元素序列中从后向前扫描3)如果该元素 ...
- [转载]DOMContentLoaded与interactive
http://www.cnblogs.com/muxrwc/archive/2011/01/13/1934379.html ie中inline script执行时竟然第一次进入页面,doc.ready ...
- 20155201 2016-2017-2 《Java程序设计》第五周学习总结
20155201 2016-2017-2 <Java程序设计>第五周学习总结 教材学习内容总结 第八章 异常处理 程序设计本身的错误,建议使用Exception或其子类实例来表现,称错误处 ...
- Android手机间无线互传功能探索及实现
年前研究了一下Android如何实现无线互传的功能,写了个小demo,最近无事,遂整理一下,与各位共享.前期调研发现,Android想要实现无线互传有以下几种技术:1,Bluetooth通行已久,简单 ...
- Interval Sum I && II
Given an integer array (index from 0 to n-1, where n is the size of this array), and an query list. ...