bzoj2432
被虐的体无完肤,
直接给题解地址吧:http://vfleaking.blog.163.com/blog/static/174807634201341721051604/
const maxk=;
type matrix=array[..,..] of int64;
var a:array[..maxk*] of longint;
first,last,b,len:array[..maxk] of longint;
pre:array[..maxk] of longint;
n,k,p,x,y,sum:int64;
i,j:longint;
ans,aa,bb,s:matrix; function ni(x:int64; y:longint):int64;
begin
ni:=;
while y> do
begin
if y mod = then ni:=ni*x mod k;
y:=y div ;
x:=x*x mod k;
end;
end; procedure work;
var i,d,ph:longint;
begin
a[]:=;a[]:=;i:=;
while true do
begin
inc(i);
a[i]:=(a[i-]+a[i-]) mod k;
if first[a[i]]= then first[a[i]]:=i;
if (a[i]=) and (a[i-]=) then break;
end;
d:=k;
ph:=k;
for i:= to trunc(sqrt(k)) do
if d mod i= then
begin
ph:=ph div i*(i-);
while d mod i= do d:=d div i;
end;
if d> then ph:=ph div d*(d-); for i:= to k- do
begin
pre[i]:=ni(i,ph-);
if int64(pre[i])*int64(i) mod k<> then pre[i]:=;
// writeln(pre[i]);
end;
b[]:=;last[]:=;i:=;
while true do
begin
len[i]:=first[pre[b[i]]]-;
if len[i]< then break;
inc(i);
b[i]:=int64(a[len[i-]])*b[i-] mod k;
if last[b[i]]> then break;
last[b[i]]:=i;
end;
aa[,]:=; aa[,]:=; aa[,]:=; aa[,]:=;
bb:=aa; bb[,]:=p-;
end; operator *(a,b:matrix)c:matrix;
var i,j,k:longint;
begin
for i:= to do
for j:= to do
begin
c[i,j]:=;
for k:= to do
c[i,j]:=(c[i,j]+a[i,k]*b[k,j]) mod p;
end;
end; function f(a:matrix;n:int64):matrix;
begin
fillchar(f,sizeof(f),);
f[,]:=;f[,]:=;f[,]:=;
while n> do
begin
if n and = then f:=f*a;
a:=a*a;
n:=n div ;
end;
end; begin
readln(n,k,p);
if n< then
begin
writeln();
exit;
end;
work;
ans[,]:=; ans[,]:=; ans[,]:=;
if n>len[] then
begin
dec(n,len[]+);
ans:=ans*f(aa,len[]-)*bb;
end
else begin
ans:=ans*f(aa,n-);
n:=;
end;
i:=;
while n> do
begin
if (pre[b[i]]=) or (len[i]<) then
begin
ans:=ans*f(aa,n);
n:=;
break;
end;
if last[b[i]]<i then break;
if n>len[i] then
begin
dec(n,len[i]+);
ans:=ans*f(aa,len[i])*bb;
end
else begin
ans:=ans*f(aa,n);
n:=;
end;
inc(i);
end;
if n<> then
begin
j:=i;
sum:=;
fillchar(s,sizeof(s),);
s[,]:=; s[,]:=; s[,]:=;
for i:=last[b[j]] to j- do
begin
inc(sum,len[i]+);
s:=s*f(aa,len[i])*bb;
end;
ans:=ans*f(s,n div sum);
n:=n mod sum;
i:=last[b[j]];
while n> do
begin
if n>len[i] then
begin
ans:=ans*f(aa,len[i])*bb;
dec(n,len[i]+);
end
else begin
ans:=ans*f(aa,n);
n:=;
end;
inc(i);
end;
end;
writeln((ans[,]+ans[,]+ans[,]) mod p);
end.
bzoj2432的更多相关文章
- 【BZOJ2432】【NOI2011】兔农(数论,矩阵快速幂)
[BZOJ2432][NOI2011]兔农(数论,矩阵快速幂) 题面 BZOJ 题解 这题\(75\)分就是送的,我什么都不想写. 先手玩一下,发现每次每次出现\(mod\ K=1\)的数之后 把它减 ...
- BZOJ2432 [Noi2011]兔农
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
- 【bzoj2432】【NOI2011】兔农
题目描述 农夫栋栋近年收入不景气,正在他发愁如何能多赚点钱时,他听到隔壁的小 朋友在讨论兔子繁殖的问题. 问题是这样的:第一个月初有一对刚出生的小兔子,经过两个月长大后,这 对兔子从第三个月开始,每个 ...
- [BZOJ2432][Noi2011]兔农 矩阵乘法+exgcd
2432: [Noi2011]兔农 Time Limit: 10 Sec Memory Limit: 256 MB Description 农夫栋栋近年收入不景气,正在他发愁如何能多赚点钱时,他听到 ...
- [bzoj2432]兔农
将每一个重置为0的点作为一段,那么它会导致后面为以x x为开头的斐波拿起数列的东西,那么设这一段是以x为开头,要快速转移到下一段,就可以解决这道题目为了转移,我们要处理出下面的东西:1.求出x关于模k ...
随机推荐
- Android Studio:Gradle常用命令
Android Studio中自带Terminal,可以直接使用gradle命令,不必另开命令窗口,相当方便,下面总结一下常用的命令: 1.查看Gradle版本号 ./gradlew -v ...
- js String Trim函数
<javascript> String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g,"& ...
- PE文件结构详解(三)PE导出表
上篇文章 PE文件结构详解(二)可执行文件头 的结尾出现了一个大数组,这个数组中的每一项都是一个特定的结构,通过函数获取数组中的项可以用RtlImageDirectoryEntryToData函数,D ...
- 配置java环境
1.下载JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 2.下载之后ne ...
- 140304笔记, mysql 更改自动增长字段值的重新设定
1. 存在同名的或不同的namespace交错情况. Caused by: com.ibatis.sqlmap.client.SqlMapException: There is no result m ...
- html添加keyword,description帮助百度收录处理方法,jsp去除空白行方法
1.将网页的title,keyword,description写成include包含文件,例如: top.jsp <%@ page language="java" conte ...
- hdu 1172 猜数字(暴力枚举)
题目 这是一道可以暴力枚举的水题. //以下两个都可以ac,其实差不多一样,呵呵 //1: //4 wei shu #include<stdio.h> struct tt { ],b[], ...
- RN学习1——前奏,app插件化和热更新的探索
react_native_banner-min.png React Native(以下简称RN)有大量前端开发者的追捧.前端开发是一个活跃的社区,一直尝试着一统前后端,做一个全栈开发,RN就是他们在客 ...
- MVC下基于DotNetOpenAuth 实现SSO单点登录
具体官网可以查看:http://dotnetopenauth.net/,托管地址:https://github.com/DotNetOpenAuth/DotNetOpenAuth 可能需要FQ 博客园 ...
- Hibernate逍遥游记-第10章 映射继承关系-002继承关系树中的根类对应一个表(discriminator、subclass)
1. 2. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...