PizzaForces (#A)
문제파악
6, 8, 10 조각으로 이뤄진 피자를 만드는 데 각 15, 20, 25 분이 걸릴 때 합쳤을 때 N 조각의 피자를 만들 때 드는 최소한의 시간을 구해라
IDEA
-
세 종류의 피자 모두 조각 당 시간은 2.5분으로 동일하다 ( 6:15 = 8: 20 = 10:25 )
-
피자가 모두 짝수 갯수 슬라이스만을 만들기 때문에 홀수 개의 슬라이스는 만들 수 없으며 이 때는 N+1 개 이상의 슬라이스를 가진 피자를 만들게 된다
-
N = 2n 인 경우 n = 3a_1 + 4a_2 + 5*a_3 로 이뤄지게 된다
3; a_1 = 1, 4; a_2 =1, 5: a_3=1, 6; a_1=2, 7;a_1=1 a_2=1, 8;a_1=1 a_2=1, 9; a_1=3 ,…
따라서 6,8,10 을 가지고 6 이상의 모든 짝수를 만들 수 있다.
-
위 3번에 의해서 6 이하의 조각은 6 피자를 만드는 시간인 15분이 걸리고 6 조각 이상의 피자들은 3 종류의 피자 조합을 통해서 조각이 남지 않게 딱 떨어지게 만들 수가 있다
어떤 피자 종류를 써도 조각 당 시간이 같고 남기는 조각이 없기에 최종적인 시간은 다 같다
CODE
#include <stdio.h>
#define MAX(x, y) ((x) > (y) ? (x) : (y))
int main(){
int T;
scanf("%d", &T);
for(int t=0; t<T; t++){
ull N;
scanf("%llu", &N);
N = MAX(N, 6);
ull result = (N+1) / 2 * 5;
printf("%llu\n", result);
}
}
주의 사항
-
세 종류 피자 모두 조각 당 시간이 동일하다는 점을 파악해야 한다
-
6, 8, 10 이 세가지 수로 모든 짝수를 만들 수 있다는 점을 알 수 있어야 한다
문제 풀 당시에 1은 파악 했지만 2를 파악하지 못하여 최소 공배수를 통해 문제를 접근하여 복잡한 풀이를 만들었다
댓글남기기