Buy Me a Coffee

APCS 題目秘密差

題目描述

在APCS考試中,秘密差是一個常見的問題類型,要求計算給定數字的奇數位和偶數位之和的絕對差。本文提供了解決這個問題的C++程式碼。

練習環境

如果沒有編譯環境,可以在以下網站練習:Programiz C++ Compiler

題目詳情

日期:2017.03.04 題目:秘密差

問題描述

給定一個十進制正整數X,將其奇數位數之和稱為A,偶數位數之和稱為B。計算|A-B|,即A與B的絕對差值。

輸入輸出格式

  • 輸入:一行含有一個十進制正整數X。
  • 輸出:X的秘密差Y(以十進制形式輸出),並以換行結尾。

解題程式碼

#include <iostream>
#include <string>
#include <cmath>

int main() {
    std::string number;
    std::cin >> number;
    int oddSum = 0, evenSum = 0;

    for (size_t i = 0; i < number.length(); ++i) {
        int digit = number[i] - '0';
        if (i % 2 == 0) {
            evenSum += digit;
        } else {
            oddSum += digit;
        }
    }

    std::cout << std::abs(oddSum - evenSum) << std::endl;
    return 0;
}

評分說明

測試資料的執行時間限制為1秒。評分依據正確通過測試資料的筆數進行。

  • 子題組1(20分):X為四位數。
  • 子題組2(30分):X的位數不超過9。
  • 子題組3(50分):X的位數不超過1000。

注意事項

  • 該解法適用於考試情境,如果輸入包含非數字字符,結果可能會不正確。
  • 程式碼中std::cin用於標準輸入,以確保在不同環境中正確執行。

本題目旨在考驗基本的字串處理和數學計算能力,對於準備APCS或其他程式設計考試的學生來說是很好的練習。