熱門文章

2025年6月6日 星期五

ZeroJudge 解題筆記:n361. 數字旅館 (hotel)

作者:王一哲
日期:2025年6月6日


ZeroJudge 題目連結:n361. 數字旅館 (hotel)

解題想法


按照題目給的 3 個條件判斷房號即可。

Python 程式碼


使用時間約為 19 ms,記憶體約為 3.4 MB,通過測試。
import sys

for line in sys.stdin:
    n = int(line)  # n 個人
    for i, a in enumerate(map(int, input().split())):  # 依序讀取房號 a
        if a%3 == 0 and a%2 == 0: print("1", end='')
        elif a&1 and a%3: print("2", end='')
        elif a == int(a**0.5)*int(a**0.5) or (a%7 and a%2 == 0): print("3", end='')
        else: print("0", end='')
        print("", end='\n' if i == n-1 else ' ')

也可以先將答案存入串列,最後再一起印出來。使用時間約為 20 ms,記憶體約為 3.3 MB,通過測試。
import sys

for line in sys.stdin:
    n = int(line)  # n 個人
    ans = []
    for i, a in enumerate(map(int, input().split())):  # 依序讀取房號 a
        if a%3 == 0 and a%2 == 0: ans.append(1)
        elif a&1 and a%3: ans.append(2)
        elif a == int(a**0.5)*int(a**0.5) or (a%7 and a%2 == 0): ans.append(3)
        else: ans.append(0)
    print(*ans)


C++ 程式碼


使用時間約為 2 ms,記憶體約為 136 kB,通過測試。
#include <cstdio>
#include <cmath>
using namespace std;

int main() {
    int n;  // n 個人
    while(scanf("%d", &n) != EOF) {
        for(int i=0; i<n; i++) {  // 依序讀取房號 a
            int a; scanf("%d", &a);
            if (a%3 == 0 && a%2 == 0) printf("1");
            else if (a&1 && a%3) printf("2");
            else if (a == int(sqrt(a))*int(sqrt(a)) || (a%7 && a%2 == 0)) printf("3");
            else printf("0");
            if (i == n-1) printf("\n");
            else printf(" ");
        }
    }
    return 0;
}


沒有留言:

張貼留言