回目錄

2010-12-22 資訊社考試

原 Google Sites 連結:/solutions/2010-12-22-zi-xun-she-kao-shi

題目列表

第 1 題

//b004: 繩子上吃草的牛 by Snail
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

int main () {
    double D, L, r1, r2, area, PI=acos(-1.);
    while (cin >> D >> L) {
        r1 = L / 2;                             // 長軸
        r2 = sqrt (L*L - D*D) / 2;              // 短軸
        area = PI * r1 * r2;                    // area-- 面積
        cout << fixed << setprecision(3) << area << endl;
    }
}

第 2 題

//b080: A. 畢氏定理(NPSC 2007 國中組決賽) by Snail
#include <iostream>
#include <cmath>
using namespace std;

int main () {
    int a, b, c, c2;                            // c2 (c^2)--c 平方
    while (cin >> a >> b, a) {
        c2 = a*a + b*b;                         // 假設 a, b 為兩股
        c = (int)sqrt(double(c2));
        if (c2 == c*c)                          // 如果 a, b, c 是直角三角形
            cout << c << endl;
        else {
            if (a < b) swap (a, b);             // 確使 a 為斜邊
            c2 = a*a - b*b;
            c = (int)sqrt(double(c2));
            if (c2 == c*c)                      // 如果 a, b, c 是直角三角形
                cout << c << endl;
            else
                cout << "Wrong\n";
        }
    }
}

第 3 題

//b197: B. 下雨天(NPSC 2008 國中組初賽) by Snail
#include <iostream>
#include <cmath>
using namespace std;

int main () {
    int n, x1, y1, x2, y2, s, tc, i, mini;
    double l, c, minc;                          // c(ost)-- 單位雨量的價格
    cin >> tc;
    while (tc--) {
        cin >> n;
        minc = 1e100;                           // min c(ost)-- 最低價格
        for (i=1; i<=n; i++) {
            cin >> x1 >> y1 >> x2 >> y2 >> s;
            l = sqrt(double((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)));
            c = s * l / abs(x1-x2);             // l(ength) -- 遮雨棚長度
            if (c < minc)
                mini = i, minc = c;             // min i(ndex) -- 最低價格索引
        }
        cout << mini << endl;
    }  
}

第 4 題

//b226: E. 鋪地磚(NPSC 2008 國中組決賽) by Snail
#include <iostream>
using namespace std;

int main () {
    int L, W, x, y;
    while (cin >> L >> W >> x >> y, L) {
        cout << ((L%x || W%y) && (L%y || W%x) ? -1 : (L * W) / (x * y)) << endl;
    }             // 若直擺不行       橫擺也不行           小屋面積 / 磁磚面積
}

第 5 題

//11150 - Cola (by Snail)
#include <iostream>
using namespace std;

int main() {
    int n;
    while (cin >> n)
        cout << n * 3 / 2 << endl;              // 等比級數 r = 3
}

第 6 題

//b225: D. 棒球練習 (NPSC 2008 國中組決賽) by Snail
#include <iostream>
using namespace std;

int main () {
    int n, x1, y1, x2, y2, x3, y3;
    cin >> n;
    while (n--) {
        cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
        cout << ((x2-x1)*(y3-y1) == (x3-x1)*(y2-y1) ? "NO\n" : "YES\n");
    }               // 若斜率相等則不成一個三角形
}

第 7 題

//d122: Oh! My Zero!! (by Snail)
#include <iostream>
using namespace std;

int main () {
     int n, z;
     while (cin >> n) {
        z = 0;                                  // z(eros) -- 零的個數
        while (n /= 5)
            z += n;
        cout << z << endl;
    }
}