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
AC × 7
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