1 条题解

  • 1
    @ 2026-8-29 17:10:48
    #include <string>
    #include <cstdio>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
        long long prod = 1;
        bool big = false;
        bool zero = false;
        
        for (int i = 0; i < n; i++) {
            string s;
            cin >> s;
            string digits;
            for (char c : s) {
                if (c >= '0' && c <= '9') {
                    digits += c;
                }
            }
            int start = 0;
            while (start < (int)digits.size() - 1 && digits[start] == '0') {
                start++;
            }
            digits = digits.substr(start);
            
            if (digits.empty() || digits == "0") {
                zero = true;
                break;
            }
            
            int len = digits.size();
            int d = 0;
            for (int j = max(0, len - 3); j < len; j++) {
                d = d * 10 + (digits[j] - '0');
            }
            
            if (len > 3 || (len == 3 && d >= 100)) big = true;
            if (!big && prod * d >= 100) big = true;
            prod = (prod * d) % 1000;
        }
        
        if (zero) {
            cout << 0 << endl;
        } else if (big) {
            printf("%03lld\n", prod);
        } else {
            cout << prod << endl;
        }
        
        return 0;
    }
    
    
    • 1

    信息

    ID
    1086
    时间
    1000ms
    内存
    128MiB
    难度
    10
    标签
    递交数
    4
    已通过
    1
    上传者