博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 4565 - so easy
阅读量:6469 次
发布时间:2019-06-23

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

题意:求ceil((a+√b)n)%m,0< a, m < 215, (a-1)2< b < a2, 0 < b, n < 231

思路:若(a+√b)n == x + y·√b(x、y为整数),则(a-√b)n == x - y·√b。又因为a-1 < √b < a,所以0 < (a-√b)n < 1,即x-1 < y·√b < x,所以ceil((a+√b)n) == 2x。接下来事情就容易多了,同时对x、y两部分进行快速幂取模即可,证明略。

1 #include 
2 typedef long long llg; 3 llg a,b,n,m; 4 void solve(){ 5 llg ans1(1),ans2(0),t1(a),t2(1); 6 llg tmp; 7 while(n){ 8 if(n&1){ 9 tmp = ans1;10 ans1 = (ans1*t1+ans2*t2*b)%m;11 ans2 = (tmp*t2+ans2*t1)%m;12 }13 tmp = t1;14 t1 = (t1*t1+t2*t2*b)%m;15 t2 = 2*tmp*t2%m;16 n >>= 1;17 }18 printf("%lld\n",ans1*2%m);19 }20 int main(){21 while(~scanf("%lld%lld%lld%lld",&a,&b,&n,&m))22 solve();23 return 0;24 }

 

转载于:https://www.cnblogs.com/lzxskjo/archive/2013/05/27/3100828.html

你可能感兴趣的文章
腾讯最大规模裁撤中层干部,让贤年轻人
查看>>
当我们谈性能的时候,我们实际上在谈什么?
查看>>
Spring Boot 2.0将会增强Actuator端点的特性
查看>>
i4o开源项目增强LINQ索引功能
查看>>
蔡超:入门 Go 语言必须跨越的五个思维误区
查看>>
使用Akka Actor和Java 8构建反应式应用
查看>>
curl常用命令详解
查看>>
saltstack 添加计划任务
查看>>
Puppet module命令参数介绍(六)
查看>>
《UNIX网络编程》中第一个timer_server的例子
查看>>
CISCO 路由器(4)
查看>>
网络服务搭建、配置与管理大全(Linux版)
查看>>
Silverlight 5 Beta新特性[4]文本缩进控制
查看>>
springMVC多数据源使用 跨库跨连接
查看>>
简单java在线测评程序
查看>>
录音和朗诵的实现
查看>>
Git服务端和客户端安装笔记
查看>>
Spring Security(14)——权限鉴定基础
查看>>
云安全与IT系统漏洞管理成为IT决策者最关注的话题
查看>>
2016年全球光纤需求量将达4.25亿芯公里 中国占57%决定产业格局
查看>>