안녕하세요. 오늘은 벼락치기를 할 거예요.
https://www.acmicpc.net/problem/25373
만약 정답이 x라고 합시다. 그러면 x+(x-1)+(x-2)+...+(x-6)이 N이상이고 이걸 만족하는 x가 최소의 정수입니다. 이말은 7x-21이 N이상이고 N이상이고 가장 작은 7의 배수를 찾으면 정답을 찾을 수 있는 것입니다. 이 부분은 쉽습니다. 하지만 문제는 예외처리입니다. N이 28미만인 경우를 잘 생각해주면 됩니다.
#include <iostream>
#define ll long long
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(false); cin.tie(NULL);
ll N, i;
cin >> N;
if (N == 1) cout << 1;
else if (N <= 3) cout << 2;
else if (N <= 6) cout << 3;
else if (N <= 10) cout << 4;
else if (N <= 15) cout << 5;
else if (N <= 21) cout << 6;
else
{
for (i = N;; i++)
{
if (i % 7 == 0)
{
cout << i / 7 + 3;
return 0;
}
}
}
}
감사합니다.