求解释
  • 板块灌水区
  • 楼主a_little_carrot
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/11/25 10:58
  • 上次更新2023/11/25 12:58:28
查看原帖
求解释
1042960
a_little_carrot楼主2023/11/25 10:58

题目描述
定义序列 fif_i 如下:

当 i<0i<0 时, fi=0f_i=0 。

当 i=0i=0 时,fi=1f_i=1 。

当 i≥1i\ge1 时,有 fi=∑j=i−ki=1 fjf_i=\sum_{j=i-k}^{i=1}\ {f_j} 。

现给定 n,kn,k ,求 fnf_n 。由于这个值可能太大,你只需要输出这个值对 modmod 取模的结果。

输入格式
一行三个自然数 k,n,modk,n,mod 。

输出格式
一行一个自然数,表示答案。

输入样例
4 2 100

输出样例
5

数据范围
对于 30%30\% 的数据,

对于额外 30%30\% 的数据,

对于 100%100\% 的数据 1≤n,k≤105,2≤mod≤1091\le n,k\le 10^5,2\le mod\le 10^9

代码

#include<bits/stdc++.h>
using namespace std;
int n,k,mod ;
long long f[200005] ;
long long s[200005] ;
int main() {
	scanf("%d%d%d",&n,&k,&mod) ;
	s[100000+0]=f[100000+0]=1 ;
	for(int i=1 ;i<=n ;i++) {
		f[100000+i]=(s[100000+i-1]-s[100000+i-k-1])%mod ;
		s[100000+i]=(s[100000+i-1]+f[100000+i])%mod ;
	}
	printf("%d",(f[100000+n]+mod)%mod) ;
	return 0 ;
}

我们老师说是什么偏移

有没有大佬解释下代码(摸鱼没听

2023/11/25 10:58
加载中...