熱門文章

2025年12月9日 星期二

ZeroJudge 解題筆記:n083. 數字序號轉換

作者:王一哲
日期:2025年12月9日


ZeroJudge 題目連結:n083. 數字序號轉換

解題想法


假設計算結果儲存在變數 m,m 的初始值為 0。將讀到的字串從索引值 0 開始,每次取長度為 3 的子字串,並用一個布林值記錄這次是否需要將子字串反序。m 加上子字串轉成 int 之後的值,再對 997 取餘數。

Python 程式碼


使用時間約為 1.8 s,記憶體約為 17.6 MB,通過測試。
import sys

MOD = 997
result = []
lines = sys.stdin.readlines()
for line in lines:
    line = line.strip()
    n = len(line)
    m = 0
    rev = False
    for i in range(0, n, 3):
        s = line[i:i+3]
        if rev: s = s[::-1]
        rev = not rev
        m = (m + int(s))%MOD
    result.append(str(m) + "\n")
sys.stdout.write("".join(result))


C++ 程式碼


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

int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    const int MOD = 997;
    string s;
    while(cin >> s) {
        int n = (int)s.size(), m = 0;
        bool rev = false;
        for(int i=0; i<n; i+=3) {
            string sub = s.substr(i, 3);
            if (rev) reverse(sub.begin(), sub.end());
            rev = !rev;
            m = (m + stoi(sub))%MOD;
        }
        cout << m << "\n";
    }
    return 0;
}


沒有留言:

張貼留言