fork(2) download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. unsigned int calcF(int n){
  5. unsigned int *F, *P, *Q, *R, result;
  6. int i;
  7. F = (unsigned int *)malloc((n+1)*sizeof(unsigned int));
  8. P = (unsigned int *)malloc((n+1)*sizeof(unsigned int));
  9. Q = (unsigned int *)malloc((n+1)*sizeof(unsigned int));
  10. R = (unsigned int *)malloc((n+1)*sizeof(unsigned int));
  11.  
  12. F[0] = F[1] = 1;
  13. P[0] = P[1] = 0;
  14. Q[0] = Q[1] = 0;
  15. R[0] = R[1] = 0;
  16.  
  17. for (i = 2; i <= n; i++) {
  18. F[i] = (2*F[i-1] + 9*F[i-2] + 2*P[i-2] + 2*Q[i-2] + 2*R[i-2]) % 10000000;
  19. P[i] = (2*P[i-1] +12*F[i-2] + 9*P[i-2] + 6*Q[i-2] + 4*R[i-2]) % 10000000;
  20. Q[i] = (2*Q[i-1] +20*F[i-2] +10*P[i-2] + 9*Q[i-2] + 4*R[i-2]) % 10000000;
  21. R[i] = (2*R[i-1] +30*F[i-2] +10*P[i-2] + 6*Q[i-2] + 9*R[i-2]) % 10000000;
  22. }
  23. result = F[n];
  24.  
  25. free(F);
  26. free(P);
  27. free(Q);
  28. free(R);
  29. return result;
  30. }
  31.  
  32. int main(void){
  33. unsigned long long i;
  34. unsigned long F;
  35. char str[1024];
  36. while( fgets(str, sizeof(str), stdin) != NULL ){
  37. i = strtoull(str, NULL, 0);
  38. F = calcF(i % 6000000);
  39. printf("%d\n", F);
  40. }
  41. return 0;
  42. }
  43.  
Success #stdin #stdout 0s 2160KB
stdin
Standard input is empty
stdout
Standard output is empty