NC208122. 花生米
描述
小Z上课的时候吃起了花生米,他这一包花生米一共有n粒,为了不被老师发现,他一次只能吃下一粒两粒或三粒,请问小Z有多少种方法在不被老师发现的情况下吃完一整包花生米?
输入描述
输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个整数m,(1<=m<=70),表示花生粒数。
输出描述
对于每个测试实例,请输出不同吃法的数量。
示例1
输入:
3 1 2 3
输出:
1 2 4
C++14(g++5.4) 解法, 执行用时: 2ms, 内存消耗: 352K, 提交时间: 2020-08-26 20:57:15
#include<cstdio> long long f[105]; int main() { int n,m; f[1]=1;f[2]=2;f[3]=4; for(int i=4;i<=70;i++) f[i]=f[i-1]+f[i-2]+f[i-3]; scanf("%d",&n); while(n--) { scanf("%d",&m); printf("%lld\n",f[m]); } }
Python(2.7.3) 解法, 执行用时: 16ms, 内存消耗: 2904K, 提交时间: 2020-06-20 13:03:35
a = [1 , 1 , 2] def main(): n = int(raw_input()) print a[n] for i in range(3 , 71): a.append(a[i - 1] + a[i - 2] + a[i - 3]) t = int(raw_input()) for i in xrange(t): main()
pypy3(pypy3.6.1) 解法, 执行用时: 55ms, 内存消耗: 27408K, 提交时间: 2020-06-20 13:11:39
M = 1000 dp = [0] * M dp[0] = 1 for i in range(1, M): for j in range(1, 4): if i - j >= 0: dp[i] += dp[i - j] t = int(input()) for _ in range(t): print(dp[int(input())])
Python3(3.5.2) 解法, 执行用时: 19ms, 内存消耗: 3352K, 提交时间: 2020-07-23 16:45:50
a=int(input()) for x in range(a): b=int(input()) c,d,e= 1,1,2 for y in range(b): c,d,e=d,e,c+d+e print(c)