Python程序运行后的输出结果

img


为什么这个程序运行后的结果为24,应该怎么判别i,j,k和sum的取值?

这个题目问的是 i 0-6 j 0-4 k 3-8 其中三个数相加等于12的组合的个数
全部循环
0 0 3
0 0 4
0 0 5
0 0 6
0 0 7
0 0 8
0 1 3
0 1 4
0 1 5
0 1 6
0 1 7
0 1 8
0 2 3
0 2 4
0 2 5
0 2 6
0 2 7
0 2 8
0 3 3
0 3 4
0 3 5
0 3 6
0 3 7
0 3 8
0 4 3
0 4 4
0 4 5
0 4 6
0 4 7
0 4 8 *
1 0 3
1 0 4
1 0 5
1 0 6
1 0 7
1 0 8
1 1 3
1 1 4
1 1 5
1 1 6
1 1 7
1 1 8
1 2 3
1 2 4
1 2 5
1 2 6
1 2 7
1 2 8
1 3 3
1 3 4
1 3 5
1 3 6
1 3 7
1 3 8 *
1 4 3
1 4 4
1 4 5
1 4 6
1 4 7 *
1 4 8
2 0 3
2 0 4
2 0 5
2 0 6
2 0 7
2 0 8
2 1 3
2 1 4
2 1 5
2 1 6
2 1 7
2 1 8
2 2 3
2 2 4
2 2 5
2 2 6
2 2 7
2 2 8 *
2 3 3
2 3 4
2 3 5
2 3 6
2 3 7 *
2 3 8
2 4 3
2 4 4
2 4 5
2 4 6 *
2 4 7
2 4 8
3 0 3
3 0 4
3 0 5
3 0 6
3 0 7
3 0 8
3 1 3
3 1 4
3 1 5
3 1 6
3 1 7
3 1 8 *
3 2 3
3 2 4
3 2 5
3 2 6
3 2 7 *
3 2 8
3 3 3
3 3 4
3 3 5
3 3 6 *
3 3 7
3 3 8
3 4 3
3 4 4
3 4 5 *
3 4 6
3 4 7
3 4 8
4 0 3
4 0 4
4 0 5
4 0 6
4 0 7
4 0 8 *
4 1 3
4 1 4
4 1 5
4 1 6
4 1 7 *
4 1 8
4 2 3
4 2 4
4 2 5
4 2 6 *
4 2 7
4 2 8
4 3 3
4 3 4
4 3 5 *
4 3 6
4 3 7
4 3 8
4 4 3
4 4 4 *
4 4 5
4 4 6
4 4 7
4 4 8
5 0 3
5 0 4
5 0 5
5 0 6
5 0 7 *
5 0 8
5 1 3
5 1 4
5 1 5
5 1 6 *
5 1 7
5 1 8
5 2 3
5 2 4
5 2 5 *
5 2 6
5 2 7
5 2 8
5 3 3
5 3 4 *
5 3 5
5 3 6
5 3 7
5 3 8
5 4 3 *
5 4 4
5 4 5
5 4 6
5 4 7
5 4 8
6 0 3
6 0 4
6 0 5
6 0 6 *
6 0 7
6 0 8
6 1 3
6 1 4
6 1 5 *
6 1 6
6 1 7
6 1 8
6 2 3
6 2 4 *
6 2 5
6 2 6
6 2 7
6 2 8
6 3 3 *
6 3 4
6 3 5
6 3 6
6 3 7
6 3 8
6 4 3
6 4 4
6 4 5
6 4 6
6 4 7
6 4 8
其中符合条件的是
0 4 8 *
1 3 8 *
1 4 7 *
2 2 8 *
2 3 7 *
2 4 6 *
3 1 8 *
3 2 7 *
3 3 6 *
3 4 5 *
4 0 8 *
4 1 7 *
4 2 6 *
4 3 5 *
4 4 4 *
5 0 7 *
5 1 6 *
5 2 5 *
5 3 4 *
5 4 3 *
6 0 6 *
6 1 5 *
6 2 4 *
6 3 3 *
所以是24

只有 j <= 4 时 sum 才可能递增,所以只考虑 0 <= j <= 4 的情况就行了。

  1. j = 0。此时 i + k == 12,易知 i 取值为 6 到 4,k 取值为 6 到 8,所以 sum += 3;
  2. j = 1。此时 i + k == 11,易知 i 取值为 6 到 3,k 取值为 5 到 8,所以 sum += 4;
  3. j = 2。此时 i + k == 10,易知 i 取值为 6 到 2,k 取值为 4 到 8,所以 sum += 5;
  4. j = 3。此时 i + k == 9,易知 i 取值为 6 到 1,k 取值为 3 到 8,所以 sum += 6;
  5. j = 4。此时 i + k == 8,易知 i 取值为 5 到 0,k 取值为 3 到 8,所以 sum += 6;
    所以综上,sum = 3 + 4 + 5 + 6 + 6 = 24。