我的名字不可能那么难记

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 16            测试通过 : 9

描述

Nirvava:Hi,Misaki,听说ZC要离开了..

Misaki:好走不送,祝一帆风顺…

Nirvana: 但他留了好多doge给我们…

Misaki:……

Nirvana:而且他们还有名字,名字如下。

据说ZC离去的原因之一就是因为第N个doge老是问他能不能记住它的名字。

Misaki:记别人名字什么的,好烦哒,ZC肯定记不住。

Nirvana:ZC当然记得,毕竟是他的宠物嘛。难倒他的是,doge的第二个问题:我的名字有多长。ZC难住了,因为他数着数着就doge精神污染了。

Misaki:这个问题,,真的好难..不过,,他们应该能解决。

PS:这个题面是不是有点熟♂悉,懒得想题面了,就把以前的题面拿出来了。

输入

多组输入

每组一个N(0<N<=10^9)

输出

第N个doge的名字有多长,由于可能太长,你只需要输出长度%1000000007(1e9+7)的结果即可。

样例输入

1
2
3
4
500

样例输出

1
3
7
17
875025602

提示

name[1]="X"
name[2]="XXY"
name[3]="XXYXXYX"
name[4]="XXYXXYXXXYXXYXXXY"
……
以此类推。
分析:设a[i]为总长度,b[i]为X的个数,c[i]为Y的个数,则有a[i]=3*b[i-1]+c[i-1],b[i]=2*b[i-1]+c[i-1],c[i]=b[i-1].
则可构造矩阵
                                |0,0,0|
|a[i-1] ,b[i-1],c[i-1]|*|3,2,1|=|a[i],b[i],c[i]|
                                |1,1,0|
#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cstdlib>
#include <stack>
#include <vector>
#include <set>
#include <map>
#define LL long long
#define mod 1000000007
#define inf 0x3f3f3f3f
#define N 1000010
using namespace std;
struct matrix
{
LL m[][];
};
LL n;
matrix mult(matrix a,matrix b)
{
matrix c;
memset(c.m,,sizeof(c.m));
for(int i=;i<;i++)
for(int k=;k<;k++)
{
if(a.m[i][k]==)continue;
for(int j=;j<;j++)
{
if(b.m[k][j]==)continue;
c.m[i][j]+=a.m[i][k]*b.m[k][j]%mod;
c.m[i][j]%=mod;
}
}
return c;
}
matrix quickmod(matrix a,LL n)
{
matrix temp;
memset(temp.m,,sizeof(temp.m));
for(int i=;i<;i++)temp.m[i][i]=;
while(n)
{
if(n&)temp=mult(temp,a);
a=mult(a,a);
n>>=;
}
return temp;
} int main()
{
while(scanf("%lld",&n)!=EOF)
{
if(n==){puts("");continue;}
matrix ans;
memset(ans.m,,sizeof(ans.m));
ans.m[][]=;ans.m[][]=;ans.m[][]=;
ans.m[][]=;ans.m[][]=;ans.m[][]=;
ans.m[][]=;ans.m[][]=;ans.m[][]=;
ans=quickmod(ans,n-);
printf("%lld\n",ans.m[][]);
}
}
 

西南民大oj(矩阵快速幂)的更多相关文章

  1. 西南民大oj(两园交求面积)

    西南民大oj:http://www.swunacm.com/acmhome/welcome.do?method=index 我的几何不可能那么可爱 时间限制(普通/Java) : 1000 MS/ 3 ...

  2. 西南民大oj 1762 我的式子不可能那么难写 【波兰式】

    描述 啦啦啦.作为一个苦逼的程序猿.?.请看下图... 现在老总想让你帮他儿子写个简单计算器(他儿子小学3年级,嘘!),写不出来就扣奖金..快帮他写吧... 给一个包含+-*/()的正确的表达式.要你 ...

  3. 西南民大oj(递推)

    我的数学不可能那么难推 时间限制(普通/Java) : 3000 MS/ 9000 MS          运行内存限制 : 65536 KByte总提交 : 49            测试通过 : ...

  4. BZOJ4000 TJOI2015棋盘(状压dp+矩阵快速幂)

    显然每一行棋子的某种放法是否合法只与上一行有关,状压起来即可.然后n稍微有点大,矩阵快速幂即可. #include<iostream> #include<cstdio> #in ...

  5. UVA - 10689 Yet another Number Sequence 矩阵快速幂

                      Yet another Number Sequence Let’s define another number sequence, given by the foll ...

  6. D: Starry的神奇魔法(矩阵快速幂)

    题目链接:https://oj.ismdeep.com/contest/Problem?id=1284&pid=3 D: Starry的神奇魔法 Time Limit: 1 s      Me ...

  7. [hdu-6395]Sequence 分块+矩阵快速幂

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6395 因为题目数据范围太大,又存在递推关系,用矩阵快速幂来加快递推. 每一项递推时  加的下取整的数随 ...

  8. 51nod 算法马拉松18 B 非010串 矩阵快速幂

    非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串. 求长度为n的非010串的个数.(对1e9+7取模) ...

  9. 【66测试20161115】【树】【DP_LIS】【SPFA】【同余最短路】【递推】【矩阵快速幂】

    还有3天,今天考试又崩了.状态还没有调整过来... 第一题:小L的二叉树 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣.所以,小L当时卡在了二叉树. ...

随机推荐

  1. Single Image Haze Removal Using Dark Channel Prior翻译

    这段时间在回顾以前做的去雾,顺便就把这篇文章翻译了一下,看看有没有同行交流.由于是用LaTex排版的,所以只能转为图片传上来了.另外,英语水平有限,大部分都是靠词典,所以只能勉强着看了.

  2. Java面试题精选(二)线程编程、数据库理论和Jdbc部分

    —— 线程编程.数据库理论和Jdbc部分内容 ——     数据库的开发应用想必是我们日常所碰到最多的知识点了,大致可分为:oracle.MySQL.SQL Server.Hadoop. NoSQL. ...

  3. python3语法小记(二)列表 和 元组

    列表(list): 列表就像一个线性容器,但是比C++的 lis t扩展多得多 列表里的元素可以是相同类型,也可以包含各种类型,比如列表里嵌套另一个列表 >>> L1 = [1,2, ...

  4. smartforms初始化

    smartforms  第一次打开的页面是和prd环境下的一样,需要跑一个程序才能编辑

  5. Html.Partial("")与Html.RenderPartial("")区别

    文章有点长,但大多是代码,看看很快的,不要压力太大.网上有很多关于这两个方法的区别,都说出了它本质的区别(不看代码,只看这个结论,就已经足够了,如果觉得有必要从代码中得出这个结论,那就继续往下看),这 ...

  6. 嵌入式Linux常见问题

    Linux问题集 1 linux设置环境变量及保存地点 1. 显示环境变量HOME $ echo $HOME /home/terry 2. 设置一个新的环境变量WELCOME $ exportWELC ...

  7. 【ASP.NET Web API教程】5.5 ASP.NET Web API中的HTTP Cookie

    原文:[ASP.NET Web API教程]5.5 ASP.NET Web API中的HTTP Cookie 5.5 HTTP Cookies in ASP.NET Web API 5.5 ASP.N ...

  8. 14.2.5.6 Adaptive Hash Indexes 自适应Hash Indexes

    14.2.5.6 Adaptive Hash Indexes 自适应Hash Indexes adaptive hash index(AHI) 让InnoDB 执行更加像在一个内存数据库里在, 在不牺 ...

  9. Linux统计文件/目录数量ls -l | grep "^-" | wc -l匹配开头和结尾

    Linux统计文件数量 ls -l | grep "^-" | wc -l “^-”  一般文件 “^d” 目录文件 shell/vim中^表示开头 cat repatterns ...

  10. JAVA的反射机制学习笔记(二)

    上次写JAVA的反射机制学习笔记(一)的时候,还是7月22号,这些天就瞎忙活了.自己的步伐全然被打乱了~不能继续被动下去.得又一次找到自己的节奏. 4.获取类的Constructor 通过反射机制得到 ...