UVA11401
发布日期:2021-10-08 15:48:49 浏览次数:14 分类:技术文章

本文共 978 字,大约阅读时间需要 3 分钟。

这题刚开始自己推的公式,

假设的是三个数位想x,x+a,x+b,

得出x>b-a,即俩个较大的数之差小于最小数,

根据这个关系推出,

代码中的公式,本人不善表达,可以自行理解:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long longusing namespace std;const int N=1e6+5;int main(){ int n; while(cin>>n) { if(n<3) break; LL sum=0; for(LL i=1;2*i+1<=n;i++) sum=sum+((n-2*i-1)*(n-2*i-1)+(n-2*i-1))/2; printf("%lld\n",sum); } return 0;}
但是书上使用的方式和我的不一样,而且书上使用了预处理,当然比我的快的多,可以自行参考大白书107页:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long longusing namespace std;const int N=1e6+10;LL f[1000010];int main(){ f[3]=0; for(LL x=4;x<=1000000;x++) f[x]=f[x-1]+((x-1)*(x-2)/2-(x-1)/2)/2; int n; while(cin>>n) { if(n<3) break; printf("%lld\n",f[n]); } return 0;}

转载地址:https://blog.csdn.net/ONE_PIECE_HMH/article/details/45175435 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:UVA11806容斥原理,位运算排列,递推组合数
下一篇:UVA11538俩皇后可以相互攻击的方法,使用平方和公式将时间复杂度降到o(1)

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月20日 02时16分53秒