プログラミング

【競プロ精進日記】c++習得編<22>

本記事は管理人が競技プログラミングを始めたため,その精進日記としてログを取ったものです。アウトプットして積極的にモチベーションを上げていく作戦です。まずはc++を習得するところから始めます。その他の記事は以下をご覧ください。

内容は管理人の推測や恣意的な感想を大いに含みます。もし間違い等ありましたらご指摘ください。あくまでも参考程度にお願い致します。

【競プロ精進日記】目次まとめ ABC Atcoder Beginner Contestの過去問を解いています。最低限のコメントと一言が添えられています。 ...

数値型

C++入門 AtCoder Programming Guide for beginners (APG4b)を1からさらっていく内容です。

#include <bits/stdc++.h>
#define _GLIBCXX_DEBUG
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
using namespace std;

int main() {
  int N = 0;
  cin >> N;
  long long l0 = 2;
  long long l1 = 1;
  rep(i, N-1){
    l1 = l1 + l0;
    l0 = l1 - l0;
  }
  cout << l1 << endl;
}

フィボナッチ数列のような再帰の問題でした。結果を格納する数値型をintにしておくと「2*10^9」までしか表せられないため,今回の問題のように「10^18」まで扱いたい場合にはlong long(64bit整数型)を利用する必要があります。

また,今回の実装では再帰関数を用いずに同じ変数を使い回すようなアイディアを利用しました。(再帰関数は頭がこんがらがるので)

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です