所有数组元素对的乘积求和

时间:2014-09-13 22:42:54

标签: arrays algorithm

如果阵列有[10,20,30,40]。我需要计算10 * 20 + 10 * 30 + 10 * 40 + 20 * 30 + 20 * 40 + 30 * 40。 假设乘法和加法都需要恒定的时间。 是否可以使用O(n)来评估它?

2 个答案:

答案 0 :(得分:1)

不确定

def sumproductsofpairs(lst):
    total = 0
    psum = 0
    for x in lst:
        total += psum * x
        psum += x
    return total

答案 1 :(得分:0)

说明: 所有对的乘积之和=((数字之和)-(数字之平方和)^2))/2

export default class ConfigurationTab extends React.Component<{}, { }> {

    static log(name:string){
        console.log(name);
        if(typeof window === "object")
        {
            console.log(name + " with window");
        }
      
    }
    constructor(props:{}){
        super(props);
        ConfigurationTab.log("ConfigurationTab");
        this.state = {};
    }
    componentDidMount(){
        ConfigurationTab.log("componentDidMount");
    }
    componentDidUpdate(){
        ConfigurationTab.log("componentDidUpdate");
    }
    componentWillUnmount(){
        ConfigurationTab.log("componentWillUnmount");
    }
    static getDerivedStateFromProps(props:{},state:{}){
        ConfigurationTab.log("getDerivedStateFromProps");
            return null;
    }
    static Layout = LayoutWithoutTopBar;
    render(){
        return (
             <div>Loaded</div>
        )
    }
}

ConfigurationTab.log("ConfigurationTab Load");

输出:

int arr[4]={10,20,30,40};
int sum=0,sum_sq=0;
for(int i=0;i<4;i++)
{
    sum+=arr[i];
    sum_sq+=(int)pow(arr[i],2);
}
cout<< ((int)pow(sum,2)-sum_sq)/2;