k690 - 肥余歷險記---(反數學城4)
題目描述
題目描述了肥余在旅途中遇到敵人,敵人會給出算式,肥余需要計算算式結果。算式包含乘法和次方兩種運算。次方運算實際上是連續乘法。
解題思路
題目要求根據輸入的算式計算結果。程式碼首先讀取輸入的數字 n,表示有 n 個算式。然後,對於每個算式,程式碼讀取第一個數字 a 和運算符 c。如果運算符是 *,則表示是次方運算,程式碼會讀取指數 b,然後計算 a 的 b 次方,並輸出結果。如果運算符不是 *,則表示是乘法運算,程式碼會讀取第二個數字 b,然後計算 a 和 b 的乘積,並輸出結果。
複雜度分析
- 時間複雜度: O(nm),其中 n 是輸入的算式數量,m 是次方運算的指數的最大值。在最壞的情況下,如果所有算式都是次方運算,且指數都很大,則時間複雜度會接近 O(nm)。
- 空間複雜度: O(1),程式碼只使用了幾個變數來存儲輸入和計算結果,空間複雜度是常數級別。
程式碼
#include <iostream>
#include <cmath>
using namespace std;
long long n,a,b;
char c;
int main(){
cin >> n;
for(int i=0;i<n;++i){
cin >> a >> c;
if(c=='*'){
cin >> c >> b;
for(long long j=1,k=a;j<b;++j){
a*=k;
}
cout << a << "\n";
}
else{
cin >> b;
cout << a*b << "\n";
}
}
}