fragment-header
fragment-markdown
홈
로그인
로그아웃
내 블로그
설정
로그인
백준 28786 (C++) Выстрел в голову
최초 업로드: 2025-10-29 02:39:08
최근 수정 시간: 2025-10-29 02:39:08
게시자: rlatjwls3333
카테고리: 백준
조회수: 10
# [Bronze II] Выстрел в голову [문제 링크](https://www.acmicpc.net/problem/28786) ## 문제 설명 <p>Агент Джонни Инглиш встретил перед собой очередного противника, которого ему предстоит убить. Для того, что бы быть уверенным в том, что его неуклюжесть этому не помешает, он решил сделать в него ровно $n$ выстрелов из своего пистолета. Его пистолет имеет магазин на $m$ патронов, который, разумеется, изначально не заряжен.</p> <p>Джонни Инглиш может полностью перезарядить свой пистолет за $a$ секунд, или доложить в магазин один патрон за $b$ секунд. Один выстрел занимает ровно одну секунду. Помогите ему посчитать, за какое минимальное время Агент Джонни Инглиш сможет совершить ровно $n$ выстрелов. Разумеется, он не может выстрелить из пустого пистолета и не может положить новый патрон в уже полный магазин.</p> ## 입력 <p>В первой строке входных данных находятся четыре целых числа $n$, $m$, $a$ и $b$ ($1 \le n, m, a, b \le {10}^4$) --- число выстрелов, которое необходимо сделать, размер магазина пистолета, время полной перезарядки магазина и время зарядки одного патрона.</p> ## 출력 <p>Выведите одно число --- минимальное время, которое понадобится агенту, что бы совершить ровно $n$ выстрелов.</p> ## 풀이 탄약을 하나씩 채우는것과 전부 채우는것 중 어떤 것이 더 적은 시간이 걸리는지 찾는 문제입니다. ``` c++ #include<bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, m, a, b; cin >> n >> m >> a >> b; int t=n; while(n>0) { if(b*min(m, n)<=a) { n--; t+=b; } else { n-=m; t+=a; } } cout << t; } ```