HAUTOJ 1283 YK的书架

题目描述

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

输入

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

输出

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

样例输入

1
2

样例输出

1
3
题意描述:
输入一个整数n(1<=n<1e9)
计算并输出2n+1本书放在三层书架上一共有多少种放法
解题思路:
题目很棒。刚开始手算了几个数,感觉肯定是规律题,后来直接编程用暴力求解1到100,虽然不能提交,但是能解决帮助找到规律不是,先写了一个递归,改成用数组优化的递归,都是只能算到10000,因为递归是需要
调用栈的,如果调用递归次数太多,自然就不可行了。最后直接发现了n和方案数的关系,没想到几行代码就搞定了。
代码实现:
 1 #include<stdio.h>
 2 int main()
 3 { 
 4     long long N;
 5     while(scanf("%lld",&N) != EOF)
 6     {
 7         printf("%lld
",N*(N+1)/2);
 8     }
 9     return 0;
10 }

易错分析:

1、规律题适当借助程序找规律

2、数据太大的一般方法都很简便。




原文地址:https://www.cnblogs.com/wenzhixin/p/7288918.html