记录编号 424759 评测结果 AAAAAAAAAA
题目名称 01进制数 最终得分 100
用户昵称 GravatarHeHe 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2017-07-14 09:27:02 内存使用 0.31 MiB
显示代码纯文本
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. using namespace std;
  5.  
  6. #define MOD (15746)
  7.  
  8. inline void Pow(void);
  9.  
  10. int s[2][2] = {{0, 1},
  11. {1, 1}},
  12. res[2][2] = {{1, 0},
  13. {0, 1}},
  14. fib[1][2] = {1, 1},
  15. ans[2][2];
  16. int N;
  17.  
  18. int main() {
  19. #ifndef LOCAL
  20. freopen("binacy.in", "r", stdin);
  21. freopen("binacy.out", "w", stdout);
  22. #endif
  23. scanf("%d", &N);
  24. Pow();
  25. for(int i = 0; i < 1; ++i) {
  26. for(int j = 0; j < 2; ++j) {
  27. for(int k = 0; k < 2; ++k) {
  28. (ans[i][j] += fib[i][k] * res[k][j]) %= MOD;
  29. }
  30. }
  31. }
  32. printf("%d", ans[0][0]);
  33. }
  34.  
  35. inline void Pow(void) {
  36. int tmp[2][2];
  37. while(N) {
  38. if(N & 1) {
  39. memset(tmp, 0x00, sizeof(tmp));
  40. for(int i = 0; i < 2; ++i) {
  41. for(int j = 0; j < 2; ++j) {
  42. for(int k = 0; k < 2; ++k) {
  43. (tmp[i][j] += res[i][k] * s[k][j]) %= MOD;
  44. }
  45. }
  46. }
  47. for(int i = 0; i < 2; ++i) {
  48. for(int j = 0; j < 2; ++j) {
  49. res[i][j] = tmp[i][j];
  50. }
  51. }
  52. }
  53. memset(tmp, 0x00, sizeof(tmp));
  54. for(int i = 0; i < 2; ++i) {
  55. for(int j = 0; j < 2; ++j) {
  56. for(int k = 0; k < 2; ++k) {
  57. (tmp[i][j] += s[i][k] * s[k][j]) %= MOD;
  58. }
  59. }
  60. }
  61. for(int i = 0; i < 2; ++i) {
  62. for(int j = 0; j < 2; ++j) {
  63. s[i][j] = tmp[i][j];
  64. }
  65. }
  66. N >>= 1;
  67. }
  68. return ;
  69. }