一个 n×m 的网格图a,左上角为(0,0),右下角为(n−1,m−1),格子(i,j) 价值为 i×m+j。小塔从左上角 (0,0)为起点,每一步可以走到上下左右四个方向的相邻格子。
对于单个价值i*m+j,i变化的价值是m,j的是1,因为m>=1,所以优先考虑i变化也就是向下走,其次在是向右走,那么还有多余的步数,考虑上下横跳,或者左右横跳,同理,左右横跳大于上下横跳,也就是当m=1时上下横跳,其余左右横跳即可
#include <bits/stdc++.h>
using namespace std;
#define int long long
int fun(int n,int a1,int d){
return n*(2*a1+(n-1)*d)/2;