문제링크 : https://www.acmicpc.net/problem/1712
이 문제는, O(n)으로 푸는 방법과 O(1)로 푸는 방법이 있다.
O(n)인 경우, 21억개의 input이 있기 때문에 제한시간 안인 0.35초에는 풀 수 없다.
따라서 O(1)인 방법으로 풀어야 한다.
O(n)인 경우는 반복문을 돌리면서 조건을 매 회 체크하는 것이고,
O(1)인 경우는 나눗셈 연산 한번이 필요하다.
소스코드 :
이 문제는, O(n)으로 푸는 방법과 O(1)로 푸는 방법이 있다.
O(n)인 경우, 21억개의 input이 있기 때문에 제한시간 안인 0.35초에는 풀 수 없다.
따라서 O(1)인 방법으로 풀어야 한다.
O(n)인 경우는 반복문을 돌리면서 조건을 매 회 체크하는 것이고,
O(1)인 경우는 나눗셈 연산 한번이 필요하다.
소스코드 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include <iostream>
using namespace std;
int main() {
int a, b, c;
cin >> a >> b >> c;
int offset = 1;
if (b >= c)
cout << -1 << endl;
else {
offset = a / (c - b);
cout << offset + 1;
/*
while (a + ((long long)b * offset) >= (long long)c * (offset)) {
offset++;
}
cout << offset << endl;
*/
}
}
| cs |
댓글
댓글 쓰기