d402 - 1.擾亂專家
題目描述
題目要求從包含雜亂字符的輸入中提取兩個整數,並計算它們的和。輸入中數字是連續的,但可能夾雜其他字符。
解題思路
這題主要考驗對輸入流的處理能力。程式碼使用 getchar() 逐個字符讀取輸入。首先,讀取字符直到遇到數字,然後提取第一個數字。提取數字的過程是,讀取數字字符,直到遇到非數字字符。接著,重複相同的過程提取第二個數字。最後,將兩個提取的數字相加並輸出結果。
複雜度分析
- 時間複雜度: O(N),其中 N 是輸入的字符數。最壞情況下,需要遍歷整個輸入來找到兩個數字。
- 空間複雜度: O(1),程式只使用了幾個整數變數來存儲數字,空間使用是常數級別。
程式碼
#include <iostream>
using namespace std;
int main(){
char a;
long long int aa=0,bb=0;
while(a=getchar()){
if(a>='0'&&a<='9'){
aa+=a-48;
while(a=getchar()){
if(a<'0'||a>'9')
break;
aa*=10;
aa+=a-48;
}
break;
}
}
while(a=getchar()){
if(a>='0'&&a<='9'){
bb+=a-48;
while(a=getchar()){
if(a<'0'||a>'9')
break;
bb*=10;
bb+=a-48;
}
break;
}
}
cout << aa << " " << bb << " " << aa+bb;
}