比赛 2025.5.24 评测结果 MMMMMMMMMMMMMMMMMMMM
题目名称 兔农 最终得分 0
用户昵称 LikableP 运行时间 2.845 s
代码语言 C++ 内存使用 1.39 MiB
提交时间 2025-05-24 11:26:53
显示代码纯文本
#include <cstdio>
#include <cctype>
typedef long long ll;

template <typename T>
T read() {
  T x = 0, f = 1;
  char ch = getchar();
  for (; !isdigit(ch); ch = getchar()) if (ch == '-') f = -1;
  for (; isdigit(ch); ch = getchar()) x = (x << 3) + (x << 1) + (ch ^ 48);
  return x * f;
}

template <typename T>
void write(T x) {
  if (x < 0) putchar('-'), x = -x;
  int sta[64], top;
  do {
    sta[++top] = x % 10;
    x /= 10;
  } while (x);
  while (top) {
    putchar(sta[top--] ^ 48);
  }
  putchar('\n');
}

ll n = read<ll>();
__int128 k = read<__int128>(), p = read<__int128>();
__int128 a = 1, b = 1;

int main() {
  freopen("noi2011_rabbit.in", "r", stdin);
  freopen("noi2011_rabbit.out", "w", stdout);
  if (n == 1) {
    write(a);
  } else if (n == 2) {
    write(b);
  } else {
    for (ll i = 3; i <= n; ++i) {
      __int128 t = a + b;
      a = b;
      b = t;
      if (b % k == 1) b--;
    }
    write(b % p);
  }
  return 0;
}