BOJ 1614 영식이의 손가락


사용한 알고리즘

  • 수학

알고리즘 설명

  • 다친 손가락과 가능 횟수의 따라서 수식이 정해진다.
  • case1. 횟수가 0인 경우, 다친 손가락 전까지 셀수 있다. 결과: N-1
  • case2. 첫번째 손가락을 다쳤다면, 결과: 8k+9
  • case3. 두번째 손가락을 다쳤다면, 결과 K가 홀수: 4K+5, K가 짝수: 4k+1
  • case4. 세번째 손가락을 다쳤다면, 결과: 4K+2
  • case5. 네번째 손가락을 다쳤다면, 결과 K가 홀수: 4K+3, K가 짝수: 4K+3
  • case6. 다섯번째 손가락을 다쳤다면, 결과: 8K+4

풀이

// baekjoon 1614 yechan
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long ll;

int N;
ll ret, K;

ll fun(ll x, int a, int b) {
	return 1LL*a*x + b;
}

int main() {
	scanf("%d%d", &N, &K);

	if (K){
		switch(N) {
			case 1: ret = fun(K, 8, 1); break;
			case 2:
				if (K & 1) 	{ ret = fun((K+1)/2-1, 8, 8); break; }
				else 		{ ret = fun(K/2, 8, 2); break; }
			case 3: ret = fun(K, 4, 3); break;
			case 4:
				if (K & 1) 	{ ret = fun((K+1)/2-1, 8, 6); break; }
				else 		{ ret = fun(K/2, 8, 4); break; }
			case 5: ret = fun(K, 8, 5); break;
		}
	} else ret = N;
	printf("%lld\n", ret-1);
	return 0;
}



© 2020.08. by fbdp1202

Powered by theorydb