HDU 3802 Ipad,IPhone
http://wutyyzchangde.blog.163.com/blog/static/172226566201132311311374/
#include <cstdio>
typedef struct{
__int64 matrix[2][2];
}Matrix;
__int64 powermod(__int64 x,__int64 n,__int64 p){
__int64 res = 1;
for(;n;n>>=1){
if(n&1)
res=(res*x)%p;
x=(x*x)%p;
}
return res;
}
Matrix multi(Matrix x,Matrix y,__int64 p){
Matrix res;
int i,j,k;
__int64 sum;
for(i=0;i<2;i++)
for(j=0;j<2;j++){
sum=0;
for(k=0;k<2;k++)sum+=(x.matrix[i][k]*y.matrix[k][j])%p;
res.matrix[i][j] = sum%p;
}
return res;
}
Matrix Mat_powermod(Matrix x,__int64 n,__int64 p){
Matrix res;
int i,j;
for(i=0;i<2;i++)
for(j=0;j<2;j++){
if(i==j)
res.matrix[i][j] = 1;
else res.matrix[i][j] = 0;
}
for(;n;n>>=1){
if(n&1)res=multi(res,x,p);
x=multi(x,x,p);
}
return res;
}
int main(){
__int64 p,T,a,b,n;
__int64 keep1,keep2,keep3;
__int64 power,result;
Matrix res;
scanf("%I64d",&T);
while(T--){
scanf("%I64d%I64d%I64d%I64d",&a,&b,&n,&p);
keep1=(powermod(a,(p-1)/2,p)+1)%p;
keep2=(powermod(b,(p-1)/2,p)+1)%p;
if(n==0)power=1;
else{
res.matrix[0][0] = 1;
res.matrix[0][1] = 1;
res.matrix[1][0] = 1;
res.matrix[1][1] = 0;
res=Mat_powermod(res,n-1,p-1);
power=(res.matrix[0][0]+res.matrix[0][1])%(p-1);
}
power+=p-1;
res.matrix[0][0]=(a+b)%p;
res.matrix[0][1]=(2*a*b)%p;
res.matrix[1][0]=2%p;
res.matrix[1][1]=(a+b)%p;
res=Mat_powermod(res,power-1,p);
keep3=(2*(((res.matrix[0][0]*(a+b))%p+(res.matrix[0][1]*2)%p)%p))%p;
result=1;
result=(result*keep1)%p;
result=(result*keep2)%p;
result=(result*keep3)%p;
printf("%I64d\n",result);
}
return 0;
}
HDU 3802 Ipad,IPhone的更多相关文章
- Ipad,IPhone(矩阵求递推项+欧拉定理)
Ipad,IPhone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- HDU 3802 矩阵快速幂 化简递推式子 加一点点二次剩余知识
求$G(a,b,n,p) = (a^{\frac {p-1}{2}}+1)(b^{\frac{p-1}{2}}+1)[(\sqrt{a} + \sqrt{b})^{2F_n} + (\sqrt{a} ...
- 判断访问浏览器客户端类型(pc,mac,ipad,iphone,android)
<script type="text/javascript"> //平台.设备和操作系统 var system = { win: false, mac: false, ...
- JS判断客户端系统 让ipad iphone 等手持设备自动跳到手机版
if ((navigator.userAgent.match(/(iPhone|iPod|Android|ios|iPad)/i))) { location.replace("http:// ...
- ipad iphone 开发的应用,加一个启动预览图片
如果你想在你的ipad,iphone应用启动是不显示黑屏幕,而是用一个图片代替的话,你只需要吧一张名为 Default.png 的图片加到项目里就行了. 很简单吧,新手们记得去这样美化下你的应用吗,很 ...
- 【HDU3802】【降幂大法+矩阵加速+特征方程】Ipad,IPhone
Problem Description In ACM_DIY, there is one master called “Lost”. As we know he is a “-2Dai”, which ...
- 100% width CSS 在 iPad / iPhone Safari 背景被截断 / 显示不全
Tips: 调试 iPad 或 iPhone 可在设置中启动调试模式,在 Mac 中的 Safari 浏览器 同样开启开发者模式后,进行联机调试.功能彪悍. 最近在做一个页面时,发现在 iPad 的 ...
- 根据浏览器内核判断是web/iOS/android/ipad/iphone 来打开不同的网站或页面
纯js,直接分享,直接使用: var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVe ...
- ipad/iphone中的前端调试
需要在ipad上调试代码, 经过一番搜索(多在google搜到的), 稍微整理下 : ). 1. Settings -> Safari -> Advanced/Developer -> ...
随机推荐
- iOS 在当前控制器中发送短信
- (void)showMessageViewWithTel:(NSString *)tel { if( [MFMessageComposeViewController canSendText] ){ ...
- As Easy As A+B
Problem Description These days, I am thinking about a question, how can I get a problem as easy as A ...
- mysql查询结果写入文件
注:转自csdn zuyi532 方法1: shell> mysql -uroot -proot -h localhost xxx库 -e " select * from xxx表 l ...
- 利用Console来调试JS程序、Console用法总结
http://blog.163.com/zhangmihuo_2007/blog/static/27011075201452522824347/ http://blog.163.com/zhangmi ...
- 学习笔记--C#特性Attribute(一)
这个框框好烦人啊,删不掉 一.背景 [serializable] public class Person(){} 这是我第一次看到特性(Attribute),那时我还不知道这是什么,怎么会有这种写法, ...
- 使用 http://httpbin.org/ 验证代理地址
发现一个很方便的工具,在Linux 下使用 curl http://httpbin.org/ 可以返回当前使用的一些网络信息
- Ubuntu 12.04 LTS下logomaker的安装
学校嵌入式课程实验,本地装的时候遇到了一系列问题,因为基本不会linux所以到处搜解决方法,中间还走了不少弯路,作个笔记. 1.解压安装倒是没什么问题,运行时提示找不到共享库 logomaker: e ...
- underscore api 概览
underscore 集合函数(数组或对象) _.each(list, iteratee, [context]); _.map(list, iteratee, [context]); _.reduce ...
- c#观察者模式学习笔记(1)
c#中的观察者是一种逻辑上很重要的角色,在服务端,观察者是服务端的通讯员,它将事件与业务紧密的结合,彼此又能按照逻辑进行分离. 实现方法为: (1)声明事件的委托原型,作为事件订阅的回调. (2)使用 ...
- ubuntu12.04&15.04 安装lamp(12.04为主)
ubuntu 12.04&15.04下安装lamp环境 注意:如果是ubuntu15.04下,apache2.4.10的话,直接在/etc/apache2/apache2.conf文件的后边直 ...