问题 E: YK的书架

xiaoxiao2021-02-27  180

点击打开链接

题目描述

    YK新买了2n+1 本相同的书,准备放在家里的3 层书架上(每一层放书的数量>=0且<=n)。不过YK摆放他的书有些特殊的要求,即任意两层摆放的书的数目之和,严格大于另一层的书的数目。现在YK想知道在满足他的要求的前提下有多少种不同的摆书方法。

输入

输入有多行,每行一个整数n(1<=n<1e9) ,其含义如题目描述中所述

输出

对于每行输入,输出一行答案。

样例输入

1 2

样例输出

1 3

分析:

这类题最好的做法就是先算几组数据看看有什么联系,因为此题给的n比较大,所以不能暴力解决,但是可以先按思路写个程序测试数据(我当时用笔算,结果错了一组数据,后面步步错,总是得不到正确答案,为此花了生命的2/3时间来做这题)

先测试数据:#include<cstdio> int main() {int n,i,j,k,m; while(scanf("%d",&n)!=EOF) {m=2*n+1; int l=0; for(i=1;i<=m;i++) for(j=1;j<=m;j++) for(k=1;k<=m;k++) if(i+j+k==m&&i+j>k&&i+k>j&&j+k>i) l++; printf("%d\n",l); } return 0;  } 

之后可以得到n与答案的关系;

代码:

#include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; int main() {long long  n; while(scanf("%lld",&n)!=EOF) { printf("%lld\n",n*(n+1)/2); } return 0; }

转载请注明原文地址: https://www.6miu.com/read-12389.html

最新回复(0)