Submission #1401653
Source Code Expand
#include <cstdio> const int MOD = 10007; int add(int x, int y){ return x + y < MOD ? x + y : x + y - MOD; } int dp[2][4], tmp[4]; int main(){ int N; scanf("%d", &N); if(N > 1) N--; int n = (1 << 30); while((N & n) == 0) n >>= 1; int b = 0; dp[0][2] = 1; for(n >>= 1; n > 0; n >>= 1){ for(int i = 1; i <= 3; i++) tmp[i] = dp[b][i]; for(int i = 1; i <= 3; i++){ int v = tmp[3]; for(int j = 3; j > 0; j--){ dp[b ^ 1][j] = add(dp[b ^ 1][j], dp[b][i] * tmp[j] % MOD); tmp[j] = add(tmp[j - 1], v); } dp[b][i] = 0; } b ^= 1; if(N & n){ int v = dp[b][3]; for(int i = 3; i > 0; i--) dp[b][i] = add(dp[b][i - 1], v); } } printf("%d\n", dp[b][3]); return 0; }
Submission Info
Submission Time | |
---|---|
Task | B - トリボナッチ数列 |
User | Doju |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 782 Byte |
Status | AC |
Exec Time | 1 ms |
Memory | 128 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:10:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] int N; scanf("%d", &N); if(N > 1) N--; ^
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 100 / 100 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | sample_01.txt, sample_02.txt, sample_03.txt, 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 | 0 ms | 128 KB |
sample_02.txt | AC | 0 ms | 128 KB |
sample_03.txt | AC | 0 ms | 128 KB |
test_1.txt | AC | 0 ms | 128 KB |
test_1000000.txt | AC | 1 ms | 128 KB |
test_1002.txt | AC | 0 ms | 128 KB |
test_104.txt | AC | 0 ms | 128 KB |
test_107843.txt | AC | 0 ms | 128 KB |
test_10980.txt | AC | 0 ms | 128 KB |
test_1212.txt | AC | 0 ms | 128 KB |
test_1238.txt | AC | 0 ms | 128 KB |
test_13194.txt | AC | 0 ms | 128 KB |
test_14.txt | AC | 0 ms | 128 KB |
test_16.txt | AC | 0 ms | 128 KB |
test_2.txt | AC | 0 ms | 128 KB |
test_210782.txt | AC | 0 ms | 128 KB |
test_21694.txt | AC | 0 ms | 128 KB |
test_243.txt | AC | 0 ms | 128 KB |
test_24916.txt | AC | 0 ms | 128 KB |
test_278.txt | AC | 0 ms | 128 KB |
test_3.txt | AC | 0 ms | 128 KB |
test_31.txt | AC | 0 ms | 128 KB |
test_32.txt | AC | 0 ms | 128 KB |
test_42.txt | AC | 0 ms | 128 KB |
test_5555.txt | AC | 0 ms | 128 KB |
test_567914.txt | AC | 0 ms | 128 KB |
test_61868.txt | AC | 1 ms | 128 KB |
test_765671.txt | AC | 0 ms | 128 KB |
test_8195.txt | AC | 0 ms | 128 KB |
test_8353.txt | AC | 0 ms | 128 KB |
test_9.txt | AC | 0 ms | 128 KB |
test_9625.txt | AC | 0 ms | 128 KB |
test_97.txt | AC | 0 ms | 128 KB |
test_998.txt | AC | 0 ms | 128 KB |
test_999998.txt | AC | 0 ms | 128 KB |
test_999999.txt | AC | 0 ms | 128 KB |