C++ 代码
#include<iostream>
using namespace std;
int main(){
int n,tmp;
cin>>n;
unsigned long long int ans=0,res=0;
while(n--){
cin>>tmp;
ans+=res*tmp; //提前了重量计算
res+=tmp; //第一次引入res+=tmp时,res累加了第一个,而重量没有被计算,这样就可以同时表达先后两个石头的数据,简直是小妙招
}
cout<<ans;
return 0;
}
读题可知,设石头的重量为a,胶水的重量为b。
a(i)=a(i)+a(i-1);
b(i)=a(i)*a(i-1);
麻烦的问题在于我本来用数组,后来发现数据太大,只能一个个读入的时候同时操作。