题目描述:

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. Invalid YGDirection 'vertical'. should be one of: ( inherit, ltr, rtl )

    react native 路由( react-native-router-flux )跳转页面一直都报错 本项目解决方法:不是路由的问题,是跳转的页面有有问题,删除下图标记的红色即可(解决方法是排除法 ...

  2. 黑马学习ajax&json 笔记

    ## 今日内容 1. AJAX: 2. JSON # AJAX: 1. 概念: ASynchronous JavaScript And XML 异步的JavaScript 和 XML 1. 异步和同步 ...

  3. JS高级学习历程-8

    2 构造函数和普通函数的区别 两者本身没有实质区别,具体看使用 new  函数();   -------->构造函数 函数();        ---------> 普通函数 <!D ...

  4. [題解](水)luogu_P1372又是畢業季1

    被入門難度的題虐...... 作者: kkksc03 吉祥物 更新时间: 2013-07-14 19:00 在Ta的博客查看    78   By lzn 数论水题一道. 首先,若可能的最大公约数为a ...

  5. mysql5.7安装部署后初始密码查看以及修改

    一.查看初始密码以下两种方法: 1.找到自己的error.log日志文件,执行自己的命令,红色标记的部分为初始化密码. grep 'temporary password' /data/mysql/er ...

  6. gedit配置

    编辑 \(\rightarrow\) 首选项 \(\rightarrow\) 插件 \(\rightarrow\) 外部工具 启用 进入工具 \(\rightarrow\) Manage Extern ...

  7. 51nod 1515 明辨是非 并查集+set维护相等与不等关系

    考试时先拿vector瞎搞不等信息,又没离散化,结果好像MLE:后来想起课上讲过用set维护,就开始瞎搞迭代器...QWQ我太菜了.. 用并查集维护相等信息,用set记录不相等的信息: 如果要求变量不 ...

  8. Spring注入bean和aop的注意事项

    spring注入类没有构造函数,注入成功抽象类,注入失败不写bean注入的名字,默认是bean第一个字母小写的名字,但是bean名字开头是两个大写,则默认是bean的名字前面所有大写都变小写@Auto ...

  9. List和set集合:交集、差集、合集的区别retainAll,removeAll、addAll

    set .list集合的交集(retainAll).差集(removeAll)是没有区别的都是一样的. set .list集合的合集addAll是有区别的:set可以去重复:list不去重复 publ ...

  10. ListView 视图(View)

    自定义视图,设置默认ListView,ListViewItems默认样式 public class VirtualStackPanelView : ViewBase { public static r ...