列表

详情


NC232159. H.荷池堪作镜,盈盈可鉴心。

描述

请注意这题空间限制!
西南民大航空港校区的梦云湖旁,有一块民族团结碑,每次看见都会肃然起敬,这个时候应该赶快去刷两道数学题啊!

定义

给定x,求出 f(x)

输入描述

一行,一个数

输出描述

由于最后答案可能很大,请输出将答案对 取模的结果

示例1

输入:

9

输出:

28

说明:

前十项的函数值分别为:0,1,2,3,4,6,9,13,19,28,所以 f(9) = 28。

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 72ms, 内存消耗: 39612K, 提交时间: 2022-01-16 12:11:53

#include<stdio.h>
int main()
{
	int a[10000001]={0,1,2,3};
	int x,i;
	scanf("%d",&x);
	for(i=4;i<=x;++i)
	{
		a[i]=a[i-1]+a[i-3];
		a[i]=a[i]%1000000007;
	}
	printf("%d",a[x]);
	return 0;
}

pypy3 解法, 执行用时: 707ms, 内存消耗: 182360K, 提交时间: 2021-12-26 21:59:44

mod=1e9+7
ans=[0,1,2,3]
x=int(input())
ans=ans+[0]*x
if x<=3:
    print(ans[x])
else:
    for i in range(4,x+1):
        ans[i]=(ans[i-1]+ans[i-3])%mod
    print(int(ans[x]%mod))

C 解法, 执行用时: 67ms, 内存消耗: 39544K, 提交时间: 2022-12-18 13:37:48

#include<stdio.h>
int main()
{
    int i,s[10000000]={0,1,2,3},x;
    scanf("%d",&x);
    for(i=4;i<=x;i++)
        s[i]=(s[i-1]+s[i-3])%1000000007;
    printf("%d",s[x]);
}

上一题