# Math# Arithmetic# Formula

e156 - 良心題: 求和

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算從 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);
}

Discussion