题目描述:

bz

题解:

乱搞好题哇。

众所周知斐波那契数列是有循环节的。

我们可以搞出在模$10^x$下与所给得数同余的集合,那么在模$10^{x+1}$下,同余集合一定是原集合及循环若干循环节的大集合的子集。

人话是,i have a xunhuanjie, i have a jihe.EN!another jihe and another xunhuanjie.

然后矩乘求值判定就好了。

代码:

#include<vector>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
ll MOD;
void Mod(ll&x){if(x>=MOD)x-=MOD;}
ll fastadd(ll a,ll b)
{
ll t = (long double)a*b/MOD;
ll ret = a*b-t*MOD;
while(ret<)ret+=MOD;
return ret;
}
struct mt
{
ll s[][];
void reset(ll k)
{
s[][]=s[][]=;
s[][]=s[][]=k;
}
void init()
{
s[][]=s[][]=s[][]=;
s[][]=;
}
bool check()
{
for(int i=;i<=;i++)for(int j=;j<=;j++)
if(s[i][j]!=(i==j))return ;
return ;
}
mt operator * (const mt&a)const
{
mt ret;ret.reset();
for(int i=;i<=;i++)
for(int j=;j<=;j++)
for(int k=;k<=;k++)
Mod(ret.s[i][j]+=fastadd(s[i][k],a.s[k][j]));
return ret;
}
};
mt operator ^ (mt&x,ll y)
{
mt ret;ret.reset();
while(y)
{
if(y&)ret=ret*x;
x=x*x;y>>=;
}
return ret;
}
ll n,L[];
vector<ll>ve[]; int main()
{
scanf("%lld",&n);
L[] = ,ve[].push_back(),MOD = ;
mt bas;bas.reset();
for(int i=;i<=;i++)
{
MOD=MOD*;
mt now;now.init();now=now^L[i&];
L[!(i&)]=,ve[!(i&)].clear();
mt nxt;nxt.reset();
while(!L[!(i&)]||!nxt.check())
{
for(int j=,lim=(int)ve[i&].size();j<lim;j++)
{
mt tmp;tmp.init();tmp=tmp^(ve[i&][j]+L[!(i&)]);
if(tmp.s[][]==n%MOD)ve[!(i&)].push_back(ve[i&][j]+L[!(i&)]);
}
L[!(i&)]+=L[i&];nxt=nxt*now;
}
}
if(!ve[].size())puts("-1");
else printf("%lld\n",ve[][]+);
return ;
}

bzoj4666 小z的胡话的更多相关文章

  1. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 7687  Solved: 3516[Subm ...

  2. BZOJ 2038: [2009国家集训队]小Z的袜子(hose)

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 7676  Solved: 3509[Subm ...

  3. BZOJ2038: [2009国家集训队]小Z的袜子(hose)

    Time Limit: 20 Sec  Memory Limit: 259 MB Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天, ...

  4. Bzoj 2038---[2009国家集训队]小Z的袜子(hose) 莫队算法

    题目链接 http://www.lydsy.com/JudgeOnline/problem.php?id=2038 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色 ...

  5. 莫队算法 2038: [2009国家集训队]小Z的袜子(hose)

    链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2038 2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 ...

  6. BZOJ 2038 小z的袜子 & 莫队算法(不就是个暴力么..)

    题意: 给一段序列,询问一个区间,求出区间中.....woc! 贴原题! 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过 ...

  7. 【BZOJ2038】【2009国家集训队】小Z的袜子(hose) 分块+莫队

    Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜 ...

  8. BZOJ-2038 小Z的袜子(hose) 莫队算法

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MB Submit: 5573 Solved: 2568 [Subm ...

  9. 【BZOJ】2038: [2009国家集训队]小Z的袜子(hose)(组合计数+概率+莫队算法+分块)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2038 学了下莫队,挺神的orzzzz 首先推公式的话很简单吧... 看的题解是从http://for ...

随机推荐

  1. GFS安装

    GlusterFS 搭建 1.环境要求 IP地址 主机名称 系统 172.16.2.201 test01 Centos 6.4 172.16.2.202 test02 Centos 6.4 172.1 ...

  2. glassfish 自定义 jaas realm

    https://www.oschina.net/translate/custom-jaas-realm-for-glassfish-3

  3. MySQL事务学习

  4. js 阻止元素发生默认的行为ie兼容

    //亲测ie9可以兼容 function Go(event) { var e = event; if (e && e.preventDefault) { e.preventDefaul ...

  5. VS 小插件 之 编辑器背景图片

    一.引言 不知道标题的名字我描述的是否正确哈,其实就是用VS写代码的时候,背景一般都是纯白 或者 纯黑(看主题而定),那么我前段时间发现 只需要一个VS插件,居然可以给VS设置背景图片,甚至还可以循环 ...

  6. G.Longest Palindrome Substring

    链接:https://ac.nowcoder.com/acm/contest/908/G 题意: A palindrome is a symmetrical string, that is, a st ...

  7. 洛谷2444(Trie图上dfs判环)

    要点 并没问具体方案,说明很可能不是构造. 思考不断读入这个文本串,然后中间不出现某些文法的串.啊,这就是个自动机. 将不合法串使用ac自动机构成一个Trie图,我们需要的字符串就是在这个自动机上无限 ...

  8. maven settings.xml windows

    <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Soft ...

  9. 关于使用rancher部署k8s集群的一些小问题的解决

    问题一: 在rancher的ui上,不能创建k8s的master节点的高可用集群.创建k8s集群,添加节点的时候,可以添加多个master,但是多个master又没有高可用,只要其中一个出问题了,那么 ...

  10. SpringBoot---Web开发---WebSocket

    [广播式] 1. <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht ...