Loading [MathJax]/jax/output/HTML-CSS/jax.js

熱門文章

2025年4月20日 星期日

ZeroJudge 解題筆記:k254. 拍七 (Seven)

作者:王一哲
日期:2025年4月20日



ZeroJudge 題目連結:k254. 拍七 (Seven)

解題想法


將整數轉成字串,在檢查字串中是否有指定的數字時會比較方便。

Python 程式碼


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

for line in sys.stdin:
    s, e, b, k = map(int, line.split())
    cnt = 0  # 拍手次數
    for i in range(s, e+1):  # 依序檢測 s ~ e
        if i%b == 0 or str(b) in str(i): cnt += 1  # i 轉成字串檢查之中是否有 b
        if cnt == k:
            print(i); break
    if cnt < k: print(-1)


C++ 程式碼


使用時間約為 3 ms,記憶體約為 340 kB,通過測試。
#include <iostream>
#include <string>
using namespace std;

int main() {
    int s, e, b, k;
    while(cin >> s >> e >> b >> k) {
        int cnt = 0;  // 拍手次數
        string m = to_string(b);  // 將 b 轉成字串,便於檢查 i 之中是否有 b
        for(int i=s; i<=e; i++) {  // 依序檢測 s ~ e
            string n = to_string(i);
            if (i%b == 0 || n.find(m) != string::npos) cnt++;
            if (cnt == k) {
                cout << i << "\n"; break;
            }
        }
        if (cnt < k) cout << "-1\n";
    }
    return 0;
}


沒有留言:

張貼留言