public static void Main()
AdvancedCalculator calculator = new AdvancedCalculator();
int sum = calculator.Add(4, 3);
int difference = calculator.Subtract(12, 4);
int product = calculator.Multiply(7, 2);
double quotient = calculator.Divide(16, 2);
double powerResult = AdvancedCalculator.Power(3, 4);
Console.WriteLine($"Sum: {sum}");
Console.WriteLine($"Difference: {difference}");
Console.WriteLine($"Product: {product}");
Console.WriteLine($"Quotient: {quotient}");
Console.WriteLine($"Power Result: {powerResult}");
IOperation customOperation = new CustomOperation();
int customResult = (int)calculator.ApplyOperation(12, 7, customOperation);
Console.WriteLine($"Custom Result: {customResult}");
public interface IOperation
int Operate(int a, int b);
public class AdvancedCalculator
public int Add(int a, int b)
public int Subtract(int a, int b)
public int Multiply(int a, int b)
public double Divide(int a, int b)
throw new ArgumentException("Cannot divide by zero");
public static double Power(int @base, int exponent)
return Math.Pow(@base, exponent);
public double ApplyOperation(int a, int b, IOperation operation)
return operation.Operate(a, b);
public class CustomOperation : IOperation
public int Operate(int a, int b)
string resultString = a.ToString() + b.ToString();
int result = int.Parse(resultString);