Submission #1521092


Source Code Expand

#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
struct LinearRec{
    int n; 
    const int LOG=31,P=1000000007;
    vector<int> first,trans;
    vector<vector<int> > bin;
    vector<int> Add(vector<int> &a, vector<int> &b){
        vector<int> result(n*2+1,0);
        for(int i=0;i<=n;i++){
            for(int j=0;j<=n;j++){
                if((result[i+j]+=1LL*a[i]*b[j]%P)>=P)result[i+j]-=P;
            }
        }
        for(int i=2*n;i>n;i--){
            for(int j=0;j<n;j++){
                if((result[i-1-j]+=1LL*result[i]*trans[j]%P)>=P)result[i-1-j]-=P;
            }result[i]=0;
        }
        result.erase(result.begin()+n+1,result.end());
        return result;
		}
		LinearRec(vector<int> &first,vector<int> &trans):first(first),trans(trans){
		    n=first.size();
		    vector<int> a(n+1,0);
		    a[1]=1;
		    bin.push_back(a);
		    for(int i=1;i<LOG;i++)bin.push_back(Add(bin[i-1],bin[i-1]));
		}
		int Calc(int k){
		    vector<int> a(n+1,0);
		    a[0]=1;
		    for(int i=0;i<LOG;i++){if(k>>i&1)a=Add(a,bin[i]);}
		    int ret=0;
		    for(int i=0;i<n;i++){
		        if((ret+=1LL*a[i+1]*first[i]%P)>=P)ret-=P;
		    }return ret;
		}
};
int main(){
    int n,k;
    scanf("%d%d",&n,&k);
    vector<int> a(n,1);
    LinearRec Rec(a,a);
    printf("%d\n",Rec.Calc(k));
    return 0;
}

Submission Info

Submission Time
Task T - フィボナッチ
User forever97
Language C++14 (GCC 5.4.1)
Score 8
Code Size 1389 Byte
Status AC
Exec Time 1341 ms
Memory 512 KiB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:44:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&n,&k);
                        ^

Judge Result

Set Name All
Score / Max Score 8 / 8
Status
AC × 7
Set Name Test Cases
All 00, 01, 02, 03, 04, 90, 91
Case Name Status Exec Time Memory
00 AC 1251 ms 512 KiB
01 AC 819 ms 512 KiB
02 AC 1341 ms 512 KiB
03 AC 223 ms 384 KiB
04 AC 971 ms 512 KiB
90 AC 1 ms 256 KiB
91 AC 1 ms 256 KiB