TakahiroNakamori

TakahiroNakamori

中森崇博(ナカモリタカヒロ)

11 /
29
2021
 

鉛筆リサイクルの新技術

問題

A – 鉛筆リサイクルの新技術
プログラミング初級者から上級者まで楽しめる、競技プログラミングコンテストサイト「AtCoder」。オンラインで毎週開催プログラミングコンテストを開催しています。競技…

ポイント

  1. \(N / m \neq 0\) が続く限り繰り返す。
  2. 新たに作成する本数(回収する量)は \((N / m) \ast n \)。
  3. 作成後に残る本数は \((N \% m) \)。
  4. 次に繰り越す本数は 1. と 2. を合わせた数で、これを \(N\) として繰り返す。

コード例

#include <bits/stdc++.h>
using namespace std;
#include <atcoder/all>
using namespace atcoder;
using ll = long long;
using P = pair<int, int>;
#define rep(i, n) for(int i = 0; i < (n); ++i)
// using mint = modint998244353;
// using mint = modint1000000007;
// const int mod = 1000000007;
// const ll INF = 1LL << 60;
// const int INF = 1001001001;

int main() {
  int m, n, N;
  cin >> m >> n >> N;

  ll ans = N;
  while(N / m != 0) {
    int v = (N / m) * n;
    ans += v;
    N = v + (N % m);
  }

  cout << ans << endl;
  return 0;
}