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