Codeforces Round #268 (Div. 2) C 24 Game

하 긴 오 랜 만 에 블 로 그 를 써 서 코드 도 요즘 덜 두 드 렸 어 요.수학 을 계속 공부 하고 있 었 는데 며칠 전에 cf 를 쳐 서 다시 파란색 이름 으로 바 뀌 었 어 요. 200 점 넘 게 넣 어 준 C 문 제 를 써 주세요.
24game, 문 제 를 보면 24 시 라 는 느낌 이 들 지만 문 제 는 1 부터 n 까지 모든 숫자 를 사용 해 야 합 니 다. 중간 결 과 를 포함 하여 마지막 으로 24 를 얻 을 수 있 습 니 다.
1 * 2 * 3 * 4 = 24 이기 때문에 4 이하 의 것 은 반드시 부족 할 것 이다.5 는 1 + 2 * 4 + 3 * 5 = 24, 6 은 2 - 1 + 3 * 4 + 5 + 6 = 24, 7 은 1 - 2 + 3 + 4 + 5 + 6 + 7 = 24;
이렇게 계속 미 룰 수 는 없 을 것 이다. 문제 에서 8 의 상황 을 제 시 했 지만 특 판 이 었 다. 그 당시 에 8 의 상황 이 생각 났 다. 4 가 24 를 충분히 모 은 토대 에서 5 - 6 + 8 - 7 = 0 으로 바 뀔 수 있다.같은 이치 로 9, 10, 11 을 얻 을 수 있다.그리고 네 개의 숫자 마다 0 을 모 을 수 있다.그러면 네 개의 반복 출력 이 이런 식 이면 됩 니 다.
#include<stdio.h>
#include<string.h>
void si(int n)
{
	int flag=0,fuck=0;
	puts("YES");
	int w=n-4;
	if(w==0) flag=0;
	else//                 ,         ,        0+1=1    ;
	{
		flag=1;
		while(w>0)
		{
			if(fuck!=0)
				printf("0 + %d = %d
",n-fuck,n-fuck); printf("%d - %d = -1
",n-1-fuck,n-fuck); printf("%d - %d = 1
",n-2-fuck,n-3-fuck); puts("-1 + 1 = 0"); w=w-4; fuck+=4; } } if(flag) puts("0 + 1 = 1"); puts("1 * 2 = 2"); puts("2 * 3 = 6"); puts("6 * 4 = 24"); } void wu(int n) { int flag=0,fuck=0; puts("YES"); int w=n-4; if(w==1) flag=0; else { flag=1; while(w>1) { if(fuck!=0) printf("0 + %d = %d
",n-fuck,n-fuck); printf("%d - %d = -1
",n-1-fuck,n-fuck); printf("%d - %d = 1
",n-2-fuck,n-3-fuck); puts("-1 + 1 = 0"); w=w-4; fuck+=4; } } if(flag) puts("0 + 1 = 1"); puts("2 * 4 = 8"); puts("1 + 8 = 9"); puts("3 * 5 = 15"); puts("9 + 15 = 24"); } void liu(int n) { int flag=0,fuck=0; puts("YES"); int w=n-4; if(w==2) flag=0; else { flag=1; while(w>2) { if(fuck!=0) printf("0 + %d = %d
",n-fuck,n-fuck); printf("%d - %d = -1
",n-1-fuck,n-fuck); printf("%d - %d = 1
",n-2-fuck,n-3-fuck); puts("-1 + 1 = 0"); w=w-4; fuck+=4; } } if(flag) puts("0 + 1 = 1"); puts("3 * 4 = 12"); puts("2 - 1 = 1"); puts("1 + 12 = 13"); puts("5 + 13 = 18"); puts("18 + 6 = 24"); } void qi(int n) { int flag=0,fuck=0; puts("YES"); int w=n-4; if(w==3) flag=0; else { flag=1; while(w>3) { if(fuck!=0) printf("0 + %d = %d
",n-fuck,n-fuck); printf("%d - %d = -1
",n-1-fuck,n-fuck); printf("%d - %d = 1
",n-2-fuck,n-3-fuck); puts("-1 + 1 = 0"); w=w-4; fuck+=4; } } if(flag) puts("0 + 1 = 1"); puts("1 - 2 = -1"); puts("-1 + 3 = 2"); puts("2 + 4 = 6"); puts("6 + 5 = 11"); puts("11 + 6 = 17"); puts("17 + 7 = 24"); } int main() { int n; scanf("%d",&n); if(n<4) puts("NO"); else if(n%4==0) si(n); else if(n%4==1) wu(n); else if(n%4==2) liu(n); else if(n%4==3) qi(n); return 0; }

좋은 웹페이지 즐겨찾기