e156 - 良心題: 求和
題目描述
題目要求計算從 1 到 n 的整數和,但限制不能使用乘法、除法、位元運算、迴圈、條件判斷等常見的程式結構。
解題思路
由於題目限制了許多常用的程式結構,因此必須利用數學公式來直接計算結果。1 + 2 + 3 + ... + n 的和可以使用等差數列求和公式直接計算:n * (n + 1) / 2。 題目限制不能使用乘法和除法,但可以使用加法和減法。因此,可以先計算 n * (n + 1),再除以 2。
複雜度分析
- 時間複雜度: O(1)
- 空間複雜度: O(1)
程式碼
#include <iostream>
using namespace std;
int main(){
int a;
scanf("%d",&a);
printf("%d\n",(1+a)*a/2);
}