1 条题解

  • 0
    @ 2026-1-14 15:41:32
    #include <bits/stdc++.h>
    using namespace std;
    int n,a,b,c;
    long long dp[300100]={}; 
    int main(){
    	cin>>n>>a>>b>>c;
    	dp[c]=1;
    	//标记为c的方案数为1 
    	for(int i=c+1;i<=n;i++){
     		if(i-a<=c) dp[i]++;//当前位置-a的结果小于等于c当前位置方案数+1 
     		else dp[i]=(dp[i]+dp[i-a])%1000000007;
     		if(i-b<=c) dp[i]++;
     		else dp[i]=(dp[i]+dp[i-b])%1000000007;
    	}
    	
    	cout<<dp[n]%1000000007;
    		
    	return 0;
    }
    
    • 1

    信息

    ID
    832
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者