number number number

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 175    Accepted Submission(s): 119

暴力发现当4 12 33 88 232

和斐波那契数列对比  答案为 第2*k+3个数减1

直接用矩阵快速幂求的F[2*k+3]  然后减1

A=1,B=0;

然后矩阵快速幂2*k+3-1次得到F[2*k+3]

 #include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<string.h>
#include<map>
#include<set>
#include<queue>
#include<vector>
#include<cstdlib>
typedef long long ll;
typedef unsigned long long LL;
using namespace std;
const int INF=0x3f3f3f3f;
const int num=;
const int mod=;
int N;
struct Mat{
ll a[num][num];
void init(){
memset(a,,sizeof(a));
for(int i=;i<num;i++)
a[i][i]=;
}
};
Mat mul(Mat a,Mat b){
Mat ans;
for(int i=;i<N;i++){
for(int j=;j<N;j++){
ans.a[i][j]=;
for(int k=;k<N;k++){
ans.a[i][j]+=a.a[i][k]*b.a[k][j];
}
ans.a[i][j]=ans.a[i][j]%mod;
}
}
return ans;
}
Mat power(Mat a,int n){
Mat ans;
ans.init();
while(n){
if(n&){
ans=mul(ans,a);
}
n=n>>;
a=mul(a,a);
}
return ans;
}
int main(){
int k;
N=;
while(scanf("%d",&k)!=EOF){
k=k*+;
Mat aa;
aa.a[][]=;
aa.a[][]=;
aa.a[][]=;
aa.a[][]=;
Mat ans=power(aa,k-);
ll t=((ans.a[][]-)%mod+mod)%mod;
cout<<t<<endl;
}
return ;
}

最新文章

  1. ACM: ICPC/CCPC Sudoku DFS - 数独
  2. Codeforces Round #371 (Div. 2) C
  3. d20161012
  4. C# 窗体
  5. hdu 5535 Cake 构造+记忆化搜索
  6. Himi的base64代码
  7. 【转载】gcc和g++的区别
  8. C++读写文件流的相关介绍
  9. Linux — 用户组、权限
  10. iOS学习——UITableViewCell两种重用方法的区别
  11. python入门(五)
  12. [转] KVM虚拟化技术生态环境介绍
  13. markdown的试用
  14. Android短信管家视频播放器代码备份
  15. 安装luasocket 的正确姿势
  16. 实现Java中的ArrayList
  17. Elastic-Job源码分析之JobScheduler类分析
  18. Linux命令之乐--telnet
  19. lvs、haproxy、nginx 负载均衡的比较分析(转)
  20. KVM虚拟化虚拟机支持虚拟化

热门文章

  1. 少啰嗦!一分钟带你读懂Java的NIO和经典IO的区别
  2. CAD从二进流加载数据(com接口VB语言)
  3. react 中样式私有
  4. Stuts2学习——HelloWorld
  5. Oracle 密码文件
  6. react入门----基础语法
  7. type=&quot;application/javascript&quot;
  8. 【Codeforces 242C】King&#39;s Path
  9. 【Codeforces 300C】Beautiful Numbers
  10. (12)GrabCut前景提取