为什么是n-1
查看原帖
为什么是n-1
766436
Mr_RedStone楼主2024/5/5 13:39

为什么最后输出答案是 f[n-1][m(s)]?而不是 f[n][m(s)]?f[i][j] 表示的不是前i项的和模 n 为 j 的数的方案数吗?为什么不能选到n

#include<bits/stdc++.h>
using namespace std;
const int mod=1e8+7;
int n,s,a,b;
int f[1005][1005];
int m(int x){
	return (x%n+n)%n;
}
int main(){
	scanf("%d %d %d %d",&n,&s,&a,&b);
	f[0][0]=1;
	for(int i=1;i<=n;i++){
		for(int j=0;j<n;j++){
			f[i][j]+=(f[i-1][m(j-a*i)]+f[i-1][m(j+b*i)])%mod;
		}
	}
	printf("%d",f[n-1][m(s)]);
	return 0;
}
2024/5/5 13:39
加载中...