John 是一個赫赫有名的藝術品投資專家,每個月都會計算藝術品投資的盈虧,以審視其獲利。John 每個月月底,即開始計算其每一件藝術品的獲利狀況。由於藝術品的種類繁多,John 每個月總是要花費許多時間,計算其獲利狀況,以決定是否要將藝術品出脫。因此,他想麻煩你撰寫一支程式,計算每一件藝術品的盈虧狀況。
輸入
測試資料的第一行是一個整數 n,代表 John 總共投資了 n 件藝術品。以下 n 行,每一行有兩個整數 m 和 p,m 是該藝術品投資的金額、p 是該藝術品目前的價值。其中 1≤m,p≤100000,單位是仟元。
intmain() { int n, m, p; double gap; while (scanf(" %d", &n) == 1) { for (int i = 0; i < n; i++) { scanf(" %d %d", &m, &p); gap = (double)((p - m) * 100) / m; gap += gap < 0 ? -EPS : EPS; if (gap < EPS2 && gap > -EPS2) gap = 0; printf("%.2lf%% %s\n", gap, gap < 10 && gap > -7 ? "keep" : "dispose"); } } return0; }
intmain() { int kase, n, m; scanf(" %d", &kase); while (kase--) { scanf(" %d %d", &n, &m); int now = 1, end = n * n, sr = 0, sc = -1, er = n - 1, ec = n - 1, i, j; while (now <= end) { for (j = ++sc; j <= ec; j++) table[sr][j] = now++; for (i = ++sr; i <= er; i++) table[i][ec] = now++; for (j = --ec; j >= sc; j--) table[er][j] = now++; for (i = --er; i >= sr; i--) table[i][sc] = now++; } if (m == 1) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) printf("%5d", table[i][j]); putchar('\n'); } } else { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) printf("%5d", table[j][i]); putchar('\n'); } } } return0; }
如果有解,那麼第 1 行先輸出“x=”,再輸出 x 的值,第 2 行先輸出“y=”,再輸出 y 的值,均保留 2 位小數,請參照樣例輸出。 如果無解或有無數解則按要求輸出“No answer”或“Too many”。
x=1.00 y=1.00
解題思路
把二元一次方程式轉成程式碼。
完整程式碼
AC (2ms, 120KB)
#include<stdio.h>
double a, b, c, d, e, f, x, y;
intmain() { scanf(" %lf %lf %lf %lf %lf %lf", &a, &b, &c, &d, &e, &f); if (a * e == d * b) puts(b * f == e * c ? "Too many" : "No answer"); else printf("x=%.2lf\ny=%.2lf\n", (c * e - b * f) / (a * e - d * b), (d * c - a * f) / (b * d - a * e)); return0; }