题解:P13577 [CCPC 2024 重庆站] 骰子
事实上,如果做这道题的时候手边能有个骰子就会简单很多(我就有好几个骰子,嘻嘻)。
思路
这道题要求一种感觉。
幸运的是,我很快就找到了这种“感觉”:当
证明
在这个证明中,我们无需考虑其他数字在骰子上的位置,只需要考虑
我们可以将网格的右上角(骰子的初始位置)的坐标设为
初始,骰子在
接下来开始我们的操作。
- 骰子在
(1,1) 位置; - 骰子向前转到
(2,1) 位置(第2 行第1 列),6 被转到后面; - 骰子向右转到
(2,2) 位置,6 还在后面; - 骰子向后转到
(1,2) 位置,6 被转到下面; - 在
(1,2) 位置写下6 。
让我们来表示这个操作。
- 骰子在
(i,j) 位置(这个位置已经被写下6 ;满足1\leq i<n,\ 1\leq j<m )。 -
-
-
- 在
(i,j+1) 位置写下6 。
至此,我们完成了骰子向右转
总结:借助下一行不断完成向右
现在我们还要来考虑
当
- 骰子在
(i,m) 位置(此时6 在下面)。 - 骰子向左转到
(i,m-1) 位置,6 被转到右面; - 骰子向前转到
(i+1,m-1) 位置,6 还在右面; - 骰子向右转到
(i+1,m) 位置,6 被转到下面; - 在
(i+1,m) 位置写下6 。
在第
结论
由以上证明,最终可以得出结论:当 n * m * 6。
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n, m; cin >> n >> m;
cout << n * m * 6;
}