Submission #342478


Source Code Expand

#include<iostream>
#include<algorithm>
using namespace std;
#define rep(i,a,b) for(auto (i)=(a);(i)<(b);(i)++)
#define rev(i,a,b) for(auto (i)=(b)-1;(i)>=(a);(i)--)
#define MOD 10007
#define M 3

int a[32][2*M-1] = {0,1,0,0,0};

//a(0)からa(2*m-2)の形のa(n)をa(0)からa(m-1)の形に直す
void form(int* n){
	rev(i, M, 2 * M - 1){
		rep(j, 1, M + 1)
			n[i - j] = (n[i - j] + n[i]) % MOD;
		n[i] = 0;
	}
}

void print(int *result){
	rep(j, 0, 3){
		printf("%d ", result[j]);
	}
	cout << endl;
}

void add(int *l, int *r, int *ans){
	//print(l); print(r);
	rep(i, 0, 2 * M - 1){
		ans[i] = 0;
	}
	rep(i,0,M)
		rep(j, 0, M){
			ans[i + j] = (ans[i + j] + (l[i] * r[j]) % MOD) % MOD;
		}
	form(ans);

	//print(ans);
}


//a(2^n)を求める
void init(){
	//初期化
	rep(n, 0, 32){

		//a(2^n)の計算
		add(a[n], a[n], a[n + 1]);
	}
}



int calc(int n){
	int result[5] = { 1 };
	int tmp[5] = { 1 };
	rep(i, 0, 30){
		if (1&(n >> i)){
			add(tmp, a[i], result);
			rep(j, 0, M)tmp[j] = result[j];
		}
	}
	return(result[2]);
}


int main(void){
	int n;
	cin >> n;
	init();		
	cout << calc(n-1) << endl;
}

Submission Info

Submission Time
Task B - トリボナッチ数列
User btk15049
Language C++11 (GCC 4.8.1)
Score 100
Code Size 1182 Byte
Status AC
Exec Time 31 ms
Memory 1020 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 33
Set Name Test Cases
All test_1.txt, test_1000000.txt, test_1002.txt, test_104.txt, test_107843.txt, test_10980.txt, test_1212.txt, test_1238.txt, test_13194.txt, test_14.txt, test_16.txt, test_2.txt, test_210782.txt, test_21694.txt, test_243.txt, test_24916.txt, test_278.txt, test_3.txt, test_31.txt, test_32.txt, test_42.txt, test_5555.txt, test_567914.txt, test_61868.txt, test_765671.txt, test_8195.txt, test_8353.txt, test_9.txt, test_9625.txt, test_97.txt, test_998.txt, test_999998.txt, test_999999.txt
Case Name Status Exec Time Memory
sample_01.txt AC 28 ms 1008 KB
sample_02.txt AC 26 ms 888 KB
sample_03.txt AC 27 ms 924 KB
test_1.txt AC 25 ms 924 KB
test_1000000.txt AC 27 ms 876 KB
test_1002.txt AC 27 ms 924 KB
test_104.txt AC 28 ms 864 KB
test_107843.txt AC 28 ms 864 KB
test_10980.txt AC 28 ms 884 KB
test_1212.txt AC 26 ms 920 KB
test_1238.txt AC 27 ms 868 KB
test_13194.txt AC 27 ms 920 KB
test_14.txt AC 27 ms 920 KB
test_16.txt AC 26 ms 860 KB
test_2.txt AC 25 ms 920 KB
test_210782.txt AC 27 ms 864 KB
test_21694.txt AC 25 ms 920 KB
test_243.txt AC 26 ms 924 KB
test_24916.txt AC 26 ms 920 KB
test_278.txt AC 28 ms 1004 KB
test_3.txt AC 26 ms 920 KB
test_31.txt AC 27 ms 1020 KB
test_32.txt AC 31 ms 916 KB
test_42.txt AC 26 ms 880 KB
test_5555.txt AC 27 ms 920 KB
test_567914.txt AC 27 ms 920 KB
test_61868.txt AC 27 ms 872 KB
test_765671.txt AC 27 ms 920 KB
test_8195.txt AC 28 ms 880 KB
test_8353.txt AC 25 ms 924 KB
test_9.txt AC 27 ms 872 KB
test_9625.txt AC 26 ms 924 KB
test_97.txt AC 27 ms 916 KB
test_998.txt AC 27 ms 920 KB
test_999998.txt AC 27 ms 944 KB
test_999999.txt AC 28 ms 924 KB