| [ economics ] in KIDS 글 쓴 이(By): pictor (홍헌수) 날 짜 (Date): 1999년 11월 26일 금요일 오전 09시 29분 25초 제 목(Title): 20일 이격도---웃기는 짬뽕 #include <stdio.h> int pr_twenty = 94131; int pr_max = 99265; int pr_min = 96534; int pr_fin = 97271; #define MAX 13 #define UNIT 3 #define HALF (UNIT * 50) #define ROUNDUP(x, y) ((((x) + (y) - 1)/(y)) * (y)) int pivot_basis, pivot_pr[4], pivot_offset[4]; char *pivot_names[] = { "2nd supp", "1st supp", "1st resi", "2nd resi" }; char * get_name(int offset) { int i; for (i=0; i < 4; i++) if (pivot_offset[i] == offset) return pivot_names[i]; return ""; } int main(int argc, char *argv[]) { int i; int val[2], diff[2], off[2], per[2]; int temp; char *name[2], sign; printf("%10d.%02d = 20 line\n\n", pr_twenty/ 100, pr_twenty % 100); pivot_basis = (pr_max + pr_min + pr_fin) / 3; pivot_pr[0] = pivot_basis - pr_max + pr_min; pivot_pr[1] = 2 * pivot_basis - pr_max; pivot_pr[2] = 2 * pivot_basis - pr_min; pivot_pr[3] = pivot_basis + pr_max - pr_min; for (i=3; i >= 0; i--) { temp = pivot_offset[i] = pivot_pr[i] - pr_fin; sign = (temp > 0) ? '+' : '-'; temp = (temp > 0) ? temp : -temp; printf("%10d.%02d : %c%2d.%02d : %s\n", pivot_pr[i]/ 100, pivot_pr[i] % 100, sign, temp / 100, temp % 100, pivot_names[i]); if (pivot_offset[i] > 0) pivot_offset[i] = ROUNDUP(pivot_offset[i] - HALF, HALF*2); else { pivot_offset[i] = -ROUNDUP(-pivot_offset[i] - HALF, HALF*2); } } printf("\n"); for (i=0; i <= MAX; i++) { diff[0] = UNIT * (i - MAX); off[0] = 100 * diff[0] + pr_fin; val[0] = pr_twenty * 19 + off[0]; val[0] /= 20; per[0] = off[0] * 10000 / val[0]; name[0] = get_name(100 * diff[0]); diff[1] = UNIT * i; off[1] = 100 * diff[1] + pr_fin; val[1] = pr_twenty * 19 + off[1]; val[1] /= 20; per[1] = off[1] * 10000 / val[1]; name[1] = get_name(100 * diff[1]); printf("%4d.%04d %4d.%02d %4d %8s | ", per[0]/10000, per[0] %10000, off[0]/100, off[0]%100, diff[0], name[0]); printf("%8s %4d %4d.%02d %4d.%04d \n", name[1], diff[1], off[1]/100, off[1]%100, per[1]/10000, per[1] %10000); } return 0; } |