Submission #119305
Source Code Expand
#include<stdio.h> #include<algorithm> using namespace std; int mod=1000000007; struct wolf{ long long d[3000]; wolf(){ for(int i=0;i<3000;i++)d[i]=0; } }; int n,k; wolf Div; wolf solve(int a){ if(a==0){ wolf ret=wolf(); ret.d[0]=1; return ret; } wolf p=solve(a/2); wolf ret=wolf(); for(int i=0;i<k;i++){ for(int j=0;j<k;j++){ ret.d[i+j+(a&1)]=(ret.d[i+j+(a&1)]+p.d[i]*p.d[j]%mod)%mod; } } for(int i=2*k;i>=k;i--){ int val=ret.d[i]; for(int j=0;j<=k;j++){ ret.d[i-j]=(ret.d[i-j]-Div.d[k-j]*val)%mod; if(ret.d[i-j]<0LL)ret.d[i-j]+=mod; } } //printf("%d:",a); //for(int i=0;i<k;i++)printf(" %d",ret.d[i]); //printf("\n"); return ret; } int main(){ scanf("%d%d",&k,&n); for(int i=0;i<k;i++){ Div.d[i]=-1; } Div.d[k]=1; wolf D=solve(n-1); int ret=0; for(int i=0;i<k;i++)ret=(ret+D.d[i])%mod; printf("%d\n",ret); }
Submission Info
Submission Time | |
---|---|
Task | T - フィボナッチ |
User | tozangezan |
Language | C++ (G++ 4.6.4) |
Score | 8 |
Code Size | 909 Byte |
Status | AC |
Exec Time | 1470 ms |
Memory | 2288 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:39:21: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 8 / 8 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | 00, 01, 02, 03, 04, 90, 91 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00 | AC | 1470 ms | 2288 KB |
01 | AC | 830 ms | 2152 KB |
02 | AC | 1458 ms | 2280 KB |
03 | AC | 251 ms | 2288 KB |
04 | AC | 418 ms | 1240 KB |
90 | AC | 24 ms | 1056 KB |
91 | AC | 22 ms | 1056 KB |