수학 기호 채우기 알고리듬 문제
글쓴이: cleansugar / 작성시간: 금, 2013/07/26 - 1:50오전
http://gall.dcinside.com/list.php?id=programming&no=373593&page=1&bbs=
?에는 + 또는 - 이 2가지의 기호만 사용할 수 있다.
? 1 ? 2 ? 3 ? 4 ? 5 ? 6 ?....? N = K
K를 입력 받았을 때, 최소값 N를 찾는 문제
예를 들어
K=2 이면 N=3
+1-2+3 = 2
K=11 이면 N=5
+1-2+3+4+5 = 11
Forums:


예시
#include <stdio.h> #include <stdlib.h> #include <string.h> void usage(); int main(int argc, char *argv[]) { if (argc<2) { usage(); exit(1); } int i; int sum ; int n; // N int k = atol(argv[1]); // K int fm; sum = 0; n = 0; fm = 0; while ( sum < k ) { sum=sum+n++; } if(sum == k) { printf("1"); for(i=2;i<n;i++){ printf(" + %d", i); } printf(" = %d\n", k); } else { while ( (sum-k)%2 ) { sum=sum+n++; } fm=sum-k; if(fm==2) printf("-1"); else printf("1"); for(i=2;i<n;i++){ if(i==fm/2) printf(" - %d", i); else printf(" + %d", i); } printf(" = %d\n", k); printf("N = %d @ K=%d\n", n-1, k); printf("\n"); exit(0); } void usage () { printf("사용법: %s _number_ \n", "a.out"); //*exename); }./a.out 2
./a.out 11
./a.out 5
---
배려하는 마음을 갖자.
댓글 달기