작성일 :

문제 링크

31282번 - ЛОВНО КУЧЕ

설명

토끼와 사냥개 사이 거리가 N이고, 한 번에 토끼는 M, 개는 K만큼 이동합니다. 매 점프마다 거리가 K−M씩 줄어들므로, 최소 몇 번의 점프로 거리가 0 이하가 되는지 구하는 문제입니다.


접근법

매 점프마다 개는 토끼보다 K - M만큼 더 이동하므로, 거리가 그만큼씩 줄어듭니다. 초기 거리 N을 이 차이로 나누면 필요한 점프 횟수를 알 수 있습니다.

나누어떨어지지 않을 경우 올림이 필요하므로, 정수 연산에서는 분자에 분모 - 1을 더한 뒤 나누면 됩니다.


Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;

class Program {
  static void Main() {
    var parts = Console.ReadLine()!.Split();
    var n = int.Parse(parts[0]);
    var m = int.Parse(parts[1]);
    var k = int.Parse(parts[2]);

    var diff = k - m;
    var jumps = (n + diff - 1) / diff;

    Console.WriteLine(jumps);
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int n, m, k; cin >> n >> m >> k;

  int diff = k - m;
  int jumps = (n + diff - 1) / diff;

  cout << jumps << "\n";

  return 0;
}