记录编号 |
400284 |
评测结果 |
AAAAAAAAAA |
题目名称 |
01进制数 |
最终得分 |
100 |
用户昵称 |
Letter zZZz |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.003 s |
提交时间 |
2017-04-29 18:29:16 |
内存使用 |
0.31 MiB |
显示代码纯文本
#include <fstream>
#include <iostream>
#include <math.h>
using namespace std;
ifstream fi("binacy.in");
ofstream fo("binacy.out");
struct Mitrix
{
int fib[3][3];
Mitrix()
{
fib[1][1]=1;fib[1][2]=1;
fib[2][1]=1;fib[2][2]=0;
}
}a,b;
Mitrix mul(Mitrix x,Mitrix y)
{
Mitrix ans;
ans.fib[1][1]=0;ans.fib[1][2]=0;ans.fib[2][1]=0;
for(int i=1;i<=2;i++)
for(int j=1;j<=2;j++)
for(int k=1;k<=2;k++)
{
ans.fib[i][j]+=x.fib[i][k]*y.fib[k][j];
ans.fib[i][j]=ans.fib[i][j]%15746;
}
return ans;
}
Mitrix fastmul(int n)
{
Mitrix ans;
ans.fib[1][1]=1;ans.fib[1][2]=0;ans.fib[2][1]=0;ans.fib[2][2]=1;
while(n)
{
if (n%2)
ans=mul(ans,a);
n/=2;
a=mul(a,a);
}
return ans;
}
int main()
{
int N;
fi>>N;
a=fastmul(N-1);
fo<<(a.fib[1][1]+a.fib[1][2])%15746;
return 0;
}