ZeroJudge:100-1 資訊社期末考參考解答 (d061)********************** 第一題 d061: 曾祖母的慶生會 ********************** #include using namespace std; int main () { int y; cin >> y; cout << 97 - y - (y < 0) << endl; } (b202)********************** 第二題 b202: A. 優惠方案 ********************** #include using namespace std; int main () { int k, p1, p2, p3; cin >> k; while (k--) { cin >> p1 >> p2 >> p3; if (p1 != p2 && p2 != p3 && p1 != p3) cout << "YES\n"; else cout << "NO\n"; } } (d669)********************** 第三題 d669: 11677 - Alarm Clock ********************** #include using namespace std; int main () { int h1, m1, h2, m2; while (cin >> h1 >> m1 >> h2 >> m2, h1 + m1 + h2 + m2) { cout << ((h2*60 + m2) - (h1*60 + m1) + 1440) % 1440 << endl; } } (d980)********************** 第四題 d980: 11479 - Is this the easiest problem? ********************** #include using namespace std; int main () { long long T, x, a, b, c; cin >> T; for (x=1; x<=T; x++) { cin >> a >> b >> c; if (a <= 0 || b <= 0 || c <= 0 || a+b <= c || a+c <= b || b+c <= a) cout << "Case " << x << ": Invalid\n"; else if (a == b && b == c) cout << "Case " << x << ": Equilateral\n"; else if (a == b || b == c || c == a) cout << "Case " << x << ": Isosceles\n"; else cout << "Case " << x << ": Scalene\n"; } } (b226)********************** 第五題 b226: E. 鋪地磚 ********************** #include 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; } //若直擺不行 橫擺也不行 } (b080)********************** 第六題 b080: A. 畢氏定理 ********************** #include #include using namespace std; int main () { int a, b, c, c2; //c2--c 平方 while (cin >> a >> b, a) { c2 = a*a + b*b; //假設c 為斜邊 c = (int)sqrt((double)c2); if (c2 == c*c) cout << c << endl; else { if (a < b) swap (a, b); //確定a > b c2 = a*a - b*b; //假設a 為斜邊 c = (int)sqrt((double)c2); if (c2 == c*c) cout << c << endl; else cout << "Wrong\n"; } } } (a132)********************** 第七題 a132: 10931 - Parity ********************** #include #include using namespace std; int main () { int n, i, s; string b, d="01"; while (cin >> n, n) { s = 0; b = ""; while (n) { s += n % 2; b = d[n % 2] + b; n /= 2; } cout << "The parity of " << b << " is " << s << " (mod 2).\n"; } } (b225)********************** 第八題 b225: D. 棒球練習 ********************** #include using namespace std; int main () { int N; double 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"); } //若斜率相等則不成一個三角形 } (b072)********************** 第九題 b072: D. 打不倒的空氣人 ********************** #include #include using namespace std; int main () { string s, w, pw; int n, m, A; while (cin >> n >> m, n) { s = " "; //用一個空白佔住s[0] while (n--) { cin >> w; //w(ord)--英文單字 s += w; //s = s + w; 會超時 } pw = ""; //p(ass)w(ord)--密碼 while (m--) { cin >> A; pw += s[A]; } cout << pw << endl; } } (a130)********************** 第十題 a130: 12015 - Google is Feeling Lucky ********************** #include #include using namespace std; int main () { int i, mxv, v[10], t, tc=1; string u[10]; //u(rl)--網址 cin >> t; while (t--) { mxv = 0; //max v--最大相關度 for (i=0; i<10; i++) { cin >> u[i] >> v[i]; mxv = max (mxv, v[i]); //求v[i] 最大值 } cout << "Case #" << tc++ << ":\n"; for (i=0; i<10; i++) if (v[i] == mxv) //若相關度最高 cout << u[i] << endl; } }