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或其他程式設計考試的學生來說是很好的練習。