你有四个正整数n,a,b,c,并准备用它们玩一个简单的数字游戏。在每一轮游戏操作中,你可以选择将n减少a,或减少n,或减少c。游戏会进行多轮操作,直到 的值小于或等于 时游戏结束。 你的任务是计算有多少种不同的操作方法可以使n变为c或更小。 注意 :如果a,b相等,那么n-a和n-b视为不同的操作。在一个轮次中,n-a、n-b和n-c都视为不同的操作。 由于可能的答案非常大,请输出结果对100000007取余后的值。 输入描述 输入一行包含四个正整数n,a,b,c。保证1≤a,b,c≤n. 输出描述 输出一个整数,表示答案。 样例 1 输入 98 3 67 4 输出 78
正确答案:参考程序(Python):n,a,b,c=map(int,input().split());f=[0]*(n+1);f[0]=1;for i in range(n+1):for d in(a,b,c):if i+d<=n:f[i+d]+=f[i];print(sum(f[max(0,n-c+1):])%100000007)。样例98,3,67,4→78。核心:DP操作计数取模。
试卷来源:2024全国青少年信息素养大赛Python编程挑战赛(复赛_浙江赛区)真题