백준 문제풀이/실버5
백준 1789번 - 수들의 합
void_melody
2021. 11. 20. 18:55
https://www.acmicpc.net/problem/1789
1789번: 수들의 합
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
www.acmicpc.net
자연수 N이 최대려면, 1+2+3+.... 이렇게 가장 작은 수부터 시작해서 더해야한다.
예제가 19여서 생각을 해보니, 1+2+3+....19가 190이다. 저 19를 200에 맞추기 위해 29로 바꿔주면 끝이다.
즉, 이렇게 더하나가다가 N보다 커지면 마지막 수만 바꿔주면 된다.
#include <iostream>
using namespace std;
int main()
{
long long S;
cin >> S;
long long sum = 0;
int count = 0;
long long i = 1;
while (true)
{
if (sum > S)
{
cout << count - 1;
break;
}
sum += i;
i++;
count++;
}
return 0;
}
입력의 범위가 커서 long long으로 했다.
처음에 int로 했다가 시간초과뜸..