# Basic Math# Input/Output

k690 - 肥余歷險記---(反數學城4)

🔗 前往 ZeroJudge 原題

題目描述

題目描述了肥余在旅途中遇到敵人,敵人會給出算式,肥余需要計算算式結果。算式包含乘法和次方兩種運算。次方運算實際上是連續乘法。

解題思路

題目要求根據輸入的算式計算結果。程式碼首先讀取輸入的數字 n,表示有 n 個算式。然後,對於每個算式,程式碼讀取第一個數字 a 和運算符 c。如果運算符是 *,則表示是次方運算,程式碼會讀取指數 b,然後計算 ab 次方,並輸出結果。如果運算符不是 *,則表示是乘法運算,程式碼會讀取第二個數字 b,然後計算 ab 的乘積,並輸出結果。

複雜度分析

  • 時間複雜度: 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"; 
		}
	}
}

Discussion