/******************************************
2015년 7월 인천광역시 교육청 모의고사
수학영역 : A형 30번, B형 21번
문제 알고리즘
******************************************/
#include <stdio.h>
/*
문제에서 주어진 정보에 의해 다음과 같이
A,B,C,D에 올 수 있는 유형이 정해진다.
A->A
A->B
B->C
B->D
C->A
C->B
D->C
D->D
이 유형마다 카운트를 설정하고 하나씩 줄여나가
맞는 유형에서 해당 값을 출력시키면 된다.
*/
int last = 0;
int cou = 0;
out(t)
{
if (t == 1) {
return;
}
out(t >> 1);
printf("\xa1%c", "\xdb\xdc"[t
& 1]); }
outa(a,b,c,d,t)
{
if (!a) {
if (!(a + b + c + d) && (last != (t<<1)))
out(last = t<<1, cou++);
return;
}
outa(a - 1, b, c, d, (t << 1));
outb(a - 1, b, c, d, (t << 1));
}
outb(a,b,c,d,t)
{
if (!b) {
if (!(a + b + c + d) && (last != (t<<1)))
out(last = t<<1, cou++);
return;
}
outc(a, b - 1, c, d, (t << 1));
outd(a, b - 1, c, d, (t << 1));
}
outc(a,b,c,d,t)
{
if (!c) {
if (!(a + b + c + d) && (last != (t<<1)+1))
out(last = (t<<1)+1, cou++);
return;
}
outa(a, b, c - 1, d, (t << 1)+1);
outb(a, b, c - 1, d, (t << 1)+1);
}
outd(a,b,c,d,t)
{
if (!d) {
if (!(a + b + c + d) && (last != (t<<1)+1))
out(last = (t<<1)+1, cou++);
return;
}
outc(a, b, c, d - 1, (t << 1)+1);
outd(a, b, c, d - 1, (t << 1)+1);
}
int start(n,a,b,c,d)
{ // n = dummy
cou = 0;
outa(a, b, c, d, 1);
outb(a, b, c, d, 1);
outc(a, b, c, d, 1);
outd(a, b, c, d, 1);
return cou;
}
int main()
{
printf("\n%d\n\n", start
(6, 2, 1, 1, 1)); printf("\n%d\n\n", start
(10, 4, 2, 2, 1)); return 0;
}
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKCTIwMTXrhYQgN+yblCDsnbjsspzqtJHsl63si5wg6rWQ7Jyh7LKtIOuqqOydmOqzoOyCrAoKCeyImO2VmeyYgeyXrSA6IEHtmJUgMzDrsogsIELtmJUgMjHrsogKCgnrrLjsoJwg7JWM6rOg66as7KaYCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojaW5jbHVkZSA8c3RkaW8uaD4KCi8qCgoJ66y47KCc7JeQ7IScIOyjvOyWtOynhCDsoJXrs7Tsl5Ag7J2Y7ZW0IOuLpOydjOqzvCDqsJnsnbQgCglBLEIsQyxE7JeQIOyYrCDsiJgg7J6I64qUIOycoO2YleydtCDsoJXtlbTsp4Tri6QuCgoJCUEtPkEKCQlBLT5CCgoJCUItPkMKCQlCLT5ECgoJCUMtPkEKCQlDLT5CCgoJCUQtPkMKCQlELT5ECgoJ7J20IOycoO2YleuniOuLpCDsubTsmrTtirjrpbwg7ISk7KCV7ZWY6rOgIO2VmOuCmOyUqSDspITsl6zrgpjqsIAKCeunnuuKlCDsnKDtmJXsl5DshJwg7ZW064u5IOqwkuydhCDstpzroKXsi5ztgqTrqbQg65Cc64ukLgoKKi8KCmludCBsYXN0ID0gMDsKaW50IGNvdSA9IDA7CgpvdXQodCkKewoJaWYgKHQgPT0gMSkgewoJCXByaW50ZigiXG4iKTsKCQlyZXR1cm47Cgl9CglvdXQodCA+PiAxKTsKCXByaW50ZigiXHhhMSVjIiwgIlx4ZGJceGRjIlt0ICYgMV0pOwp9CgpvdXRhKGEsYixjLGQsdCkKewoJaWYgKCFhKSB7CgkJaWYgKCEoYSArIGIgKyBjICsgZCkgJiYgKGxhc3QgIT0gKHQ8PDEpKSkKCQkJb3V0KGxhc3QgPSB0PDwxLCBjb3UrKyk7CgkJcmV0dXJuOwoJfQoJb3V0YShhIC0gMSwgYiwgYywgZCwgKHQgPDwgMSkpOwoJb3V0YihhIC0gMSwgYiwgYywgZCwgKHQgPDwgMSkpOwp9CgpvdXRiKGEsYixjLGQsdCkKewoJaWYgKCFiKSB7CgkJaWYgKCEoYSArIGIgKyBjICsgZCkgJiYgKGxhc3QgIT0gKHQ8PDEpKSkKCQkJb3V0KGxhc3QgPSB0PDwxLCBjb3UrKyk7CgkJcmV0dXJuOwoJfQoJb3V0YyhhLCBiIC0gMSwgYywgZCwgKHQgPDwgMSkpOwoJb3V0ZChhLCBiIC0gMSwgYywgZCwgKHQgPDwgMSkpOwp9CgpvdXRjKGEsYixjLGQsdCkKewoJaWYgKCFjKSB7CgkJaWYgKCEoYSArIGIgKyBjICsgZCkgJiYgKGxhc3QgIT0gKHQ8PDEpKzEpKQoJCQlvdXQobGFzdCA9ICh0PDwxKSsxLCBjb3UrKyk7CgkJcmV0dXJuOyAKCX0KCW91dGEoYSwgYiwgYyAtIDEsIGQsICh0IDw8IDEpKzEpOwoJb3V0YihhLCBiLCBjIC0gMSwgZCwgKHQgPDwgMSkrMSk7Cn0KCm91dGQoYSxiLGMsZCx0KQp7CglpZiAoIWQpIHsKCQlpZiAoIShhICsgYiArIGMgKyBkKSAmJiAobGFzdCAhPSAodDw8MSkrMSkpCgkJCW91dChsYXN0ID0gKHQ8PDEpKzEsIGNvdSsrKTsKCQlyZXR1cm47IAoJfQoJb3V0YyhhLCBiLCBjLCBkIC0gMSwgKHQgPDwgMSkrMSk7CglvdXRkKGEsIGIsIGMsIGQgLSAxLCAodCA8PCAxKSsxKTsKfQoKaW50IHN0YXJ0KG4sYSxiLGMsZCkKeyAvLyBuID0gZHVtbXkKCWNvdSA9IDA7CglvdXRhKGEsIGIsIGMsIGQsIDEpOwoJb3V0YihhLCBiLCBjLCBkLCAxKTsKCW91dGMoYSwgYiwgYywgZCwgMSk7CglvdXRkKGEsIGIsIGMsIGQsIDEpOwoJcmV0dXJuIGNvdTsKfQoKaW50IG1haW4oKQp7CglwcmludGYoIlxuJWRcblxuIiwgc3RhcnQoNiwgIDIsIDEsIDEsIDEpKTsKCXByaW50ZigiXG4lZFxuXG4iLCBzdGFydCgxMCwgNCwgMiwgMiwgMSkpOwoJcmV0dXJuIDA7Cn0=