日期: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;
}
沒有留言:
張貼留言