結果
| 問題 |
No.194 フィボナッチ数列の理解(1)
|
| コンテスト | |
| ユーザー |
tails
|
| 提出日時 | 2020-10-30 01:19:18 |
| 言語 | cLay (20241019-1) |
| 結果 |
AC
|
| 実行時間 | 5 ms / 5,000 ms |
| コード長 | 774 bytes |
| コンパイル時間 | 3,870 ms |
| コンパイル使用メモリ | 187,108 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-07-05 14:40:59 |
| 合計ジャッジ時間 | 4,926 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 37 |
ソースコード
#include <sys/mman.h>
Modint a[1d4+1];
{
char*rp=static_cast<char*>(mmap(0,24l<<10,1,2,0,0));
ll n=0; {int c;while(c=*rp++-48,c>=0)n=n*10+c;}
ll k=0; {int c;while(c=*rp++-48,c>=0)k=k*10+c;}
if(n>30){
Modint f,s;
rep(i,n){
int v=*rp-48;
rp+=2;
f+=a[i]=v;
}
a[n]=f;
s=f+f;
int j=0;
rep(i,n+1,k){
a[j]=f=f+f-a[j];
if(++j>n) j=0;
s+=f;
}
wt(f,s);
}else{
rep(i,n){
int v=*rp-48;
rp+=2;
a[i]=v;
}
Polynomial<Modint> b,c,m;
b.change(0,1);
c.change(1,1);
m.change(0,1);
m.change(n,-2);
m.change(n+1,1);
for(int j=40;j>=0;--j){
b*=b;
b%=m;
if(k-n&1l<<j){
b*=c;
b%=m;
}
}
Modint x,y,z;
rrep(i,n){
x+=a[i];
y-=x*b.c[0];
b*=c;
b%=m;
z-=x*b.c[0];
}
wt(z-y,z+x);
}
}
tails