前两块可以看成是不是二次剩余,快速幂计算即可。

后半部分可以看成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的更多相关文章

  1. HDU 3802 Ipad,IPhone

    http://wutyyzchangde.blog.163.com/blog/static/172226566201132311311374/ #include <cstdio> type ...

  2. HDU 5007 Post Robot KMP (ICPC西安赛区网络预选赛 1001)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5007 解题报告:输入一篇文章,从头开始,当遇到 “Apple”, “iPhone”, “iPod”, ...

  3. 数据结构(主席树):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 ...

  4. HDU题解索引

    HDU 1000 A + B Problem  I/O HDU 1001 Sum Problem  数学 HDU 1002 A + B Problem II  高精度加法 HDU 1003 Maxsu ...

  5. hdu 5007 水 弦

    http://acm.hdu.edu.cn/showproblem.php?pid=5007 纯粹的联系String的substr 什么时候substr拦截比写短话 string te; int n; ...

  6. hdu 5007

    http://acm.hdu.edu.cn/showproblem.php?pid=5007 字符串处理 暴力 #include <cstdio> #include <cstdlib ...

  7. iPhone Anywehre虚拟定位提示“后台服务未启动,请重新安装应用后使用”的解决方法

    问题描述: iPhone越狱了,之后在Cydia中安装Anywhere虚拟定位,但是打开app提示:后台服务未启动,请重新安装应用后使用. 程序无法正常使用... 解决方法: 打开Cydia-已安装, ...

  8. input标签中button在iPhone中圆角的问题

    1.问题 使用H5编写微信页面时,使用<input type="button"/>时,在Android手机中显示正常,但是在iPhone手机中则显示不正常,显示为圆角样 ...

  9. iOS获取iPhone系统等信息和服务器返回空的异常处理

    前言: 在项目中经常会遇到需要获取系统的信息来处理一些特殊的需求和服务端返回为空的处理,写在这里只是笔记一下. 获取设备的信息 NSLog(@"globallyUniqueString=%@ ...

随机推荐

  1. Hadoop生态圈-Flume的组件之自定义拦截器(interceptor)

    Hadoop生态圈-Flume的组件之自定义拦截器(interceptor) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客只是举例了一个自定义拦截器的方法,测试字节传输速 ...

  2. windows下非管理员权限安装mysql

    windows下,mysql有两种安装方式: 1.msi安装 2.zip安装 无论是哪种安装方式,都因为需要将mysql安装为一个服务,所以必须要以管理员权限安装. 因为公司的换了虚拟机,无法取得管理 ...

  3. bzoj千题计划104:bzoj1013: [JSOI2008]球形空间产生器sphere

    http://www.lydsy.com/JudgeOnline/problem.php?id=1013 设球心(x1,x2,x3……) 已知点的坐标为t[i][j] 那么 对于每个i满足 Σ (t[ ...

  4. python 基础部分重点复习整理--从意识那天开始进阶--已结

    pythonic 风格编码 入门python好博客 进阶大纲 有趣的灵魂 老齐的教程 老齐还整理了很多精华 听说 fluent python + pro python 这两本书还不错! 元组三种遍历, ...

  5. 如何使用 grunt

    1>. 首先要有nodejs环境, 至少0.8.0版本: 2>. 转到 项目文件夹下: >npm install –g grunt-cli >npm init #生成一个基本的 ...

  6. J2EE完全手册(一)

    为了使开发者能尽快的开发企业级的应用程序,Sun在1999年推出一种基于J2SE(用于开发桌面应的Java标准版)的开发模型:J2EE,用于开发服务器应用程序与服务的Java企业版,他运行于J2EE服 ...

  7. [BZOJ 1652][USACO 06FEB]Treats for the Cows 题解(区间DP)

    [BZOJ 1652][USACO 06FEB]Treats for the Cows Description FJ has purchased N (1 <= N <= 2000) yu ...

  8. 第8月第12天 python json.dumps danmu

    1.json.dumps return JsonResponse({ 'status': WechatMessage.POST_METHOD_REQUIRED[1], 'status_code': W ...

  9. 使用 jquery-autocomplete插件 完成文本框输入自动填充联想效果 解决兼容IE输入中文问题

    项目中有时会用到ajax自动补全查询,就像Google的搜索框中那样,输入汉字或者字母的首个字母,则包含这个汉字或者字母的相关条目会显示出来供用户选择,该插件就是实现这样的功能的.autocomple ...

  10. ApiCloud利用NVTabBar模块快速搭建起APP的框架

    废话不说,直接上代码 模块地址:https://docs.apicloud.com/Client-API/Nav-Menu/NVTabBar 代码实例: <!doctype html> & ...