P8772 [蓝桥杯 2022 省 A] 求和 新解法(非前缀和)

看到大佬们的前缀和代码,本蒟蒻自愧不如 qwq。

本题也可以用 完全平方公式!!!

咳咳,先从一个简单的例子入手:

12345678910 这些正整数中每两个数相乘的乘积之和是多少?

我们都知道这十个数两两相乘的乘积有 C102=45 个,有多项式:

(1+2+3++9+10)2(12+22+32++92+102)2

为这十个数两两相乘的乘积之和。

  • 为什么?

先看一下下面的算式:

(1+2+3++9+10)2

由完全平方公式展开后为:

(12+22+32++92+102)+2×(1×2+1×3+9×10)

不难发现多项式 (1×2+1×3+9×10) 正是要求的答案!

易得:

(1×2+1×3+9×10)=(1+2+3++9+10)2(12+22+32++92+102)2

那么本题的公式就是:

(a1+a2+a3++an1+an)2(a12+a22+a32++an2)2

最后送上代码!

#include<bits/stdc++.h> #define int long long using namespace std; int n,x,mul=0,sum=0; //mul:和的平方 //sum:平方的和 signed main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>x; sum+=(x*x); mul+=x; } cout<<(mul*mul-sum)/2; return 0; }

__EOF__

本文作者_NightFire666_
本文链接https://www.cnblogs.com/NightFire666-blog/p/18487304.html
关于博主:_NightFire666_
版权声明:转载请注明来源哟~ QAQ
声援博主:UP UP UP !!!
posted @   夜·煞  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示