2259. Day3 D - duck-duck-goose

红烧鸭子的价格是 a 元一盘,清汤鸭子的价格是 b 元一盘, 烧鹅的价格是 c 元一盘。

WAduckd 元钱,请问它有多少种点餐的方式,使得总价格不超过 d 元钱?注意每种菜都可以点多盘,也都可以不点。

循环语句 嵌套 和 你

煮啵没活了喵,煮啵给大家咬个打火机喵 uwu

如果循环语句的运行逻辑理解的正确,循环语句嵌套的写法想必大家能够自然探索。这里补充两点细节 qwq

一个简单的 for 循环嵌套使用例:

for (int i=1;i<=3;i++) { for (int j=1;j<=4;j++) { cout<<i*j<<' '; } cout<<'\n'; }

输出:

1 2 3 4 2 4 6 8 3 6 9 12

1. continue 和 break 的作用域

for (int i=1;i<=3;i++) { for (int j=1;j<=4;j++) { if (i*j==6) continue; cout<<i*j<<' '; } cout<<'\n'; }

输出:

1 2 3 4 2 4 8 3 9 12

我们可以看到第二行输出中的 6 被跳过了,但是之后的 8 没有被跳过。 这可以说明 continue 只跳过了一次内层的 for 循环(第一次跳过了 i=2,j=3 ,随后继续 i=2,j=4,而不是直接跳过 i=2 到 i=3。)

break 的作用域同理,大家可以多实践探索一下。请大家多多试着写不同的代码并且编译运行!对于编程学习来说,实践探索是特别重要的环节呀 pwp

2. 循环变量寿命

for (int i=1;i<=3;i++) { for (int j=1;j<=5;j++) { if (j>i) break; } //cout<<j<<' '; 布豪! }

定义在 for 循环内(循环内部或者 for 语句的第一个部分)的变量,在这一层循环的外面就不能使用了。 (while 循环内定义的变量寿命同理)

如果希望 for 循环的变量在循环结束之后还能够使用,请把这个变量定义在这层循环外面!

for (int i=1;i<=3;i++) { int j; for (j=1;j<=5;j++) { if (j>i) break; } cout<<j<<'\n'; } //cout<<j<<' '; 布豪!

输出:

2 3 4

在这段代码的内层循环中,for 语句的第一个部分给 j 赋了初值(而不是定义 j),而 j 是在这层循环开始前就定义的,所以也可以在这层循环结束后使用。但因为这个 j 在外层循环内定义,外层循环结束之后变量 j 还是不能使用 qwq 因为这个 for 循环对变量 j 的值进行了修改,所以也体现在了内层循环结束后的输出值上。 如果对这段代码不是很理解,依然建议多编码尝试!qwqpwpqwqpwp 欢迎讨论,主播神志不清的状态下写的,有问题欢迎指出咕嘎

输入

输入一行四个正整数 a,b,c,d (1 \leq a,b,c,d \leq 3000)

输出

输出一行一个整数,表示答案。

样例

标准输入 复制文本
1 2 3 3
标准输出 复制文本
7

提示

样例解释:

0=0 (可以不点餐)

1=1

1+1=2

1+1+1=3

2=2

1+2=3

3=3

一共 7 种。

改编自 JZOI 原题。fun fact: 小时候这道题立方做法过了((

登录以提交代码。
单点时限 1 秒
内存限制 128 MB
提交 273
通过 58