結果
| 問題 | 
                            No.891 隣接3項間の漸化式
                             | 
                    
| コンテスト | |
| ユーザー | 
                             yakamoto
                         | 
                    
| 提出日時 | 2019-09-20 22:36:44 | 
| 言語 | C++14  (gcc 13.3.0 + boost 1.87.0)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 2,666 bytes | 
| コンパイル時間 | 1,720 ms | 
| コンパイル使用メモリ | 174,928 KB | 
| 実行使用メモリ | 6,948 KB | 
| 最終ジャッジ日時 | 2024-09-14 18:34:08 | 
| 合計ジャッジ時間 | 2,977 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge3 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 33 WA * 6 | 
ソースコード
/**
 * code generated by JHelper
 * More info: https://github.com/AlexeyDmitriev/JHelper
 * @author
 */
#include <iostream>
#include <fstream>
#ifndef SOLUTION_COMMON_H
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using PI = pair<int, int>;
template<class T> using V = vector<T>;
using VI = V<int>;
#define _1 first
#define _2 second
#ifdef MY_DEBUG
# define DEBUG(x) x
#else
# define DEBUG(x)
#endif
template<class T>
inline void debug(T &A) {
  DEBUG(
      for (const auto &a : A) {
        cerr << a << " ";
      }
      cerr << '\n';
  )
}
template<class T, class Func>
inline void debug_with_format(T &A, Func f) {
  DEBUG(
      for (const auto &a : A) {
        cerr << f(a) << " ";
      }
      cerr << '\n';
  )
}
template<class T>
inline void debug_dim2(T &A) {
  DEBUG(
      for (const auto &as : A) {
        debug(as);
      }
  )
}
template<typename ... Args>
inline void debug(const char *format, Args const &... args) {
  DEBUG(
      fprintf(stderr, format, args ...);
      cerr << '\n';
  )
}
template<typename ... Args>
string format(const string &fmt, Args ... args) {
  size_t len = snprintf(nullptr, 0, fmt.c_str(), args ...);
  vector<char> buf(len + 1);
  snprintf(&buf[0], len + 1, fmt.c_str(), args ...);
  return string(&buf[0], &buf[0] + len);
}
template<class T1, class T2>
string fmtP(pair<T1, T2> a) {
  stringstream ss;
  ss << "(" << a._1 << "," << a._2 << ")";
  return ss.str();
}
#define SOLUTION_COMMON_H
#endif //SOLUTION_COMMON_H
V<V<ll>> mat_mul(V<V<ll>> a, V<V<ll>> b, int m) {
  assert(a[0].size() == b.size());
  ll th = (ll)7e18;
  int r = (int)a.size();
  int c = (int)b[0].size();
  int len = (int)a[0].size();
  V<V<ll>> res(a.size(), V<ll>(b[0].size()));
  for (int i = 0; i < r; ++i) {
    for (int j = 0; j < c; ++j) {
      ll v = 0ll;
      for (int k = 0; k < len; ++k) {
        v += a[i][k] * b[k][j];
        if (v > th) v %= m;
      }
      res[i][j] = v >= m ? v % m : v;
    }
  }
  return res;
}
V<V<ll>> mat_pow(V<V<ll>> a, int n, int m) {
  if (n == 1) return a;
  V<V<ll>> res = mat_pow(mat_mul(a, a, m), n / 2, m);
  if (n % 2 == 1)
    return mat_mul(res, a, m);
  else
    return res;
}
const int MOD = 1000000007;
class E {
public:
  void solve(std::istream& in, std::ostream& out) {
    int a, b, n;
    in >> a >> b >> n;
    if (n == 0) {
      out << a;
      return;
    }
    if (n == 1) {
      out << b;
      return;
    }
    V<V<ll>> A = {{a, b}, {1, 0}};
    auto B = mat_pow(A, n, MOD);
    out << B[1][0];
  }
};
int main() {
	E solver;
	std::istream& in(std::cin);
	std::ostream& out(std::cout);
	solver.solve(in, out);
	return 0;
}
            
            
            
        
            
yakamoto