# Greedy# Array# Math

e417 - 乘法乘法加法~

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算給定數列中,相鄰兩數相乘後的所有和。輸入包含多組測試資料,每組資料首先輸入一個整數 N,表示數列的長度,然後輸入 N 個整數,表示數列中的元素。

解題思路

題目要求計算 X1*X2 + X1*X3 + ... + XN-2*XN-1 + XN-2*XN + XN-1*XN。 程式碼使用迴圈迭代數列,並累加相鄰兩數的乘積。 首先初始化 aansp 為 0。 讀取數列長度 a。 建立一個大小為 a 的整數陣列 b。 讀取數列元素並存儲在 b 陣列中。 使用迴圈計算相鄰兩數的乘積和,並將結果累加到 ans 中。 迴圈中,p 累加 b[i],然後 ans 加上 b[i+1] 乘以 p。 輸出 ans。 重置 aansp 為 0,以便處理下一組測試資料。

複雜度分析

  • 時間複雜度: O(N)
  • 空間複雜度: O(N)

程式碼

#include <iostream>

using namespace std;

int main(){
	
	long long int a=0,ans=0,p=0;
	while(cin >> a){
		long long int b[a];
		for(int i=0;i<a;i++){
			scanf("%lld",&b[i]);
		}
		for(int i=0;i<a-1;i++){
			p+=b[i];
			ans+=b[i+1]*p;
		}
		printf("%lld\n",ans);
		a=0;ans=0;p=0;
	}
}

Discussion